问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求大神指导如何用JAVA计算出一个List里的相似信息

发布网友 发布时间:2022-05-15 22:27

我来回答

4个回答

热心网友 时间:2023-08-02 07:39

这个相似是要求相似度是多少?建议去重写TestMessage类的equals和hash方法。
package com;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;

class TestMessage{

private int messageId;

private String message;

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

public int getMessageId() {
return messageId;
}

public void setMessageId(int messageId) {
this.messageId = messageId;
}

@Override
public int hashCode() {
if(null == this.message){
return super.hashCode();
}else{
return this.message.hashCode();
}
}

@Override
public boolean equals(Object obj) {
if(null == obj){
return false;
}else if(obj instanceof TestMessage){
TestMessage tempObj = (TestMessage)obj;
return StringUtils.equalsIgnoreCase(message, tempObj.getMessage());
}else{
return false;
}
}

}

public class Test {

public static void main(String[] args) {

List<TestMessage> list1 = new ArrayList<TestMessage>();

TestMessage yq1 = new TestMessage();
yq1.setMessageId(11);
yq1.setMessage("this is a test message");

TestMessage yq2 = new TestMessage();
yq2.setMessageId(12);
yq2.setMessage("this is a test message");

TestMessage yq3 = new TestMessage();
yq3.setMessageId(13);
yq3.setMessage("hello world");

TestMessage yq4 = new TestMessage();
yq4.setMessageId(14);
yq4.setMessage("this is a test message");

list1.add(yq1);
list1.add(yq2);
list1.add(yq3);
list1.add(yq4);
Map<TestMessage,List<TestMessage>> data = new HashMap<TestMessage,List<TestMessage>>();
for(int i=0;i<list1.size();i++){
TestMessage key = list1.get(i);
if(!data.containsKey(key)){
data.put(key, new ArrayList<TestMessage>());
}else{
continue;
}
List<TestMessage> temp = data.get(key);
for(int j=i+1;j<list1.size();j++){
TestMessage value = list1.get(j);
if(temp.contains(value)){
continue;
}else{
temp.add(value);
}
}
}

System.out.println("OK");
}

}

热心网友 时间:2023-08-02 07:39

你加个if判断map集合的value集合中是否含有message值,当message首次出现时,就先加到map集合中,key为首次出现message的TestMessage对象,value为空;
当message已存在时,则在对应的map值集合中添加此message值

热心网友 时间:2023-08-02 07:40

package com.www;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

public class TestMessage {

private int messageId;

private String message;

public int getMessageId() {

return messageId;

}

public void setMessageId(int messageId) {

this.messageId = messageId;

}

public String getMessage() {

return message;

}

public void setMessage(String message) {

this.message = message;

}

public boolean sameMessage(TestMessage test){

if(this == null){

return test == null;

}

if(test != null){

if(test.getMessage() != null){

return test.getMessage().equals(this.message);

}else if(this.message == null){

return true;

}

}

return false;

}

public static void main(String[] args) {

List<TestMessage> list1 = new ArrayList<TestMessage>();

TestMessage yq1 = new TestMessage();

yq1.setMessageId(11);

yq1.setMessage("this is a test message");

TestMessage yq2 = new TestMessage();

yq2.setMessageId(12);

yq2.setMessage("this is a test message");

TestMessage yq3 = new TestMessage();

yq3.setMessageId(13);

yq3.setMessage("hello world");

TestMessage yq4 = new TestMessage();

yq4.setMessageId(14);

yq4.setMessage("this is a test message");

list1.add(yq1);

list1.add(yq2);

list1.add(yq3);

list1.add(yq4);

Map<TestMessage, List<TestMessage>> map = new HashMap<TestMessage, List<TestMessage>>();

for(TestMessage t : list1){

boolean has = false;

for(TestMessage m : map.keySet()){

if(m.sameMessage(t)){

map.get(m).add(t);

has = true;

break;

}

}

if(!has){

map.put(t, new ArrayList<TestMessage>());

}

}

}

}

热心网友 时间:2023-08-02 07:40

根据什么分组呢 你自己看懂自己写什么吗?追问根据message相同的分组

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怀孕四个月补钙可以吗 孕妇吃什么时候钙片好 孕妇吃什么钙片最好 怀孕补钙是必须的吗?孕妇钙片品牌哪个好? ...在长高的黄金发育时期,会影响容貌五官的变化吗,不仅没有发育到变... 冬至吃饺子的诗词 立冬吃饺子的暖心诗词 宁波全封闭学校有哪些 宁波市北仑区小港镇会计学校在那? 或红联镇也可以 江南教育集团小港中心幼儿园园况介绍 红联哪里有报暑假班 含有近义词的四字词语3个,含有反义词的四字词语3个 含近义词或反义词的四字词语。急!!! 含反义词、近义词的四字词语 有好评 请教打什么,刚买的华硕fx50j为什么运行速度很慢 华硕笔记本电脑运行慢 含近义词的四字词语,含反义词的四字词语,含比喻的 含有反义词的四字词语和含有近义词的四字词语 以下数据结构中 哪一个是线性结构 简述数组、广义表属于线性表的原因。 携程网买火车票还没买到怎么要先预付钱 广义表是非线性结构,为什么是线性表呢?,求理解,谢谢!! 携程旅行网订高铁票是不是要在网上先支付款 我在携程上预定火车票还要提前付款可以嘛? 数据结构广义表与线性表的区别 广义表是线性结构的吗 广义表是线性结构还是非线性结构?为什么? 求一个班级元旦晚会开场白。谢谢 海湾消防主机停电的情况下备电会自动转入工作状态吗?如果备电会转入工作状态,主电电源需要关闭吗? 消防主机广播功放必须接备用电源吗 海湾消防主机备用电源容量有多大 fdx-06限速器测试仪符号怎么打 检测电梯限速器需要什么资质 为什么我的ppt中没有“分解图片”选项??? 如何检测电梯限速器动作时的最小张力 电梯限速器测速仪加墨吗? c语言程序一运行就停止工作 请问PPT中这种分解框怎么做出来的呢?求解 电梯限速器检验报告是使用单位存档吗 PPt怎么把一个人的图片分解? 关于1000的阶乘作为中间值,如何算 ppt如何画出下面的第一幅的分解箭头图以及第二幅的点号、拆线 保利跟中建海峡哪个好 PVC型号分类 黑眉锦蛇的分布范围 到黑水县去旅游几月份风景最好? 全画幅微单相机排行中有没有价格一万多块,但是又拍照效果好的机型呢? 梅干菜包子馅做法大全 梅干菜包子馅的做法 长虹电视按任意键唤醒遥控器长虹电视按任意键唤醒遥控器,怎么按_百度问一问 梅干菜肉包子怎么做好吃,梅干菜肉包子的家