Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按两个不同的值对哈希集排序?_Java_Sorting_Hashset_Comparable - Fatal编程技术网

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支半垒打 蒂娜·特洛伊,

我需要帮助

我有一个类型为的哈希集

ResultTemploye包含员工(包含id、姓名、电子邮件等)和两个名为“半命中”和“全命中”的成员。我对一组雇员进行迭代,以查找.equals或.包含我搜索的字符串的字符串。“半命中”和“全命中”成员计算此结果

我的输出:

米娅·史密斯,0支全垒打,1支半垒打

Maik May,3支全垒打,2支半垒打

伊芙你好,2支全安打,0支半安打

蒂娜·特洛伊,3支全垒打,1支半垒打

等等

我想要的示例输出:

Maik May,3支全垒打,2支半垒打

蒂娜·特洛伊,3支全垒打,1支半垒打

伊芙你好,2支全安打,0支半安打

米娅·史密斯,0支全垒打,1支半垒打

等等

问题: 我不知道如何按两个不同的值对哈希集进行排序。 我试过用Comparable,但失败了。我不知道该怎么做 这样地。请帮帮我。我不知道,我怎么能这样做。我试过这样的方法:

 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)));