好的,所以我一直在做一个学校的项目,我试图计算不同用户的共同兴趣。因此,我试图将他们获得的“分数”存储在HashMap中,以获得他们每个共同的兴趣,然后选择最感兴趣的用户(最高HashMap键)。我已经完成了整数的比较,但如何返回用户最多的点数?Java:如何正确返回对象?
例TXT文件,它读取来自与加载到列表:
丹尼尔:adcbadcbd
麦:abdcbdcab
public User getMutualUser(User user) {
final Map<User, Integer> points = new HashMap<User, Integer>();
for(User u : users) {
if(u.getName().equals(user.getName())) continue;
for(int i = 0; i < u.getAnswers().size(); i++) {
if(u.getAnswers().get(i).equals(user.getAnswers().get(i))) {
System.out.println(u.getName() + " - " + u.getAnswers().get(i));
int current = points.get(u);
points.put(u, current + 1);
}
}
}
Collections.sort(users, new Comparator<User>() {
public int compare(User u1, User u2) {
Integer score1 = points.get(u1);
Integer score2 = points.get(u2);
return score1.compareTo(score2);
}
});
}
你应该在你的开篇中澄清一下这个语言。说一个'Map'只能有“每个值1个键”是一个倒退。地图只能有“每个KEY1个值”。你还应该指出,就'map'而言,如果'score1.equals(score2)'的关键是相同的。 – vpiTriumph
非常感谢,但最终我应该如何返回用户? – Compressions
谢谢。我根据这些评论编辑了答案。 – Stewart