Java 按两个不同的值对哈希集排序?
我需要帮助 我有一个类型为Java 按两个不同的值对哈希集排序?,java,sorting,hashset,comparable,Java,Sorting,Hashset,Comparable,我需要帮助 我有一个类型为的哈希集 ResultTemploye包含员工(包含id、姓名、电子邮件等)和两个名为“半命中”和“全命中”的成员。我对一组雇员进行迭代,以查找.equals或.包含我搜索的字符串的字符串。“半命中”和“全命中”成员计算此结果 我的输出: 米娅·史密斯,0支全垒打,1支半垒打 Maik May,3支全垒打,2支半垒打 伊芙你好,2支全安打,0支半安打 蒂娜·特洛伊,3支全垒打,1支半垒打 等等 我想要的示例输出: Maik May,3支全垒打,2支半垒打 蒂娜·特洛伊,
public class SortHelper implements Comparator<ResultEmployee> {
@Override
public int compare(ResultEmployee o1, ResultEmployee o2) {
return ((Integer)o1.getFullHits()).compareTo((Integer)o2.getFullHits());
}
}
公共类SortHelper实现Comparator{
@凌驾
公共整数比较(ResultTemploye o1,ResultTemploye o2){
返回((整数)o1.getFullHits()).compareTo((整数)o2.getFullHits());
}
}
但是这只比较了全打和半打。不确定为什么要选演员,我猜是
ResultTemployee
的实现,但是试试看
public class SortHelper implements Comparator<ResultEmployee> {
@Override
public int compare(ResultEmployee o1, ResultEmployee o2) {
int result =((Integer)o1.getFullHits()).compareTo((Integer)o2.getFullHits());
if (result == 0) { // Full hits were the same
result = ((Integer)o1.getHalfHits()).compareTo((Integer)o2.getHalfHits());
}
return result.
}
}
如果你展示了你的类的代码而不是描述它们,那就更清楚了。还要看看如何创建一个。特别是你用Comparable做的尝试,看看你做了什么错误考虑使用一个。集合的一个基本属性是它们没有任何顺序。在
HashSet
中甚至不能有顺序(如果不是只有插入顺序的LinkedHashSet
)。如果确实需要对某些内容进行排序,则首先需要一个SortedSet
(例如TreeSet
)。然后你可以让你的类实现Comparable
,如果它有一个自然的顺序,或者你可以用一个定制的比较器进行排序。哦,天哪,非常感谢你……这对我来说很有用:)
Set<ResultEmployee> set = new TreeSet<>(new SortHelper());
Set<ResultEmployee> set = new TreeSet<>(Comparator.comparing(ResultEmployee::getFullHits).thenComparing(Comparator.comparing(ResultEmployee::getHalfHits)));