java - 按大小对 ArrayList 中的集合进行排序

标签 java sorting set

我想通过将所有集合放在一个列表中来实现这一点,然后该列表将出现在 map 中,其中键是大小。我知道一个集合的最大大小(给我),所以我可以在 0 和那个数字之间迭代,获取每个列表,然后遍历每个列表并将每个集合放入数组列表中。

但是,这看起来笨拙得可怕 - 有没有更好的方法来做到这一点?有什么方法可以根据大小执行比较器功能吗?

谢谢

最佳答案

您可以提供 Comparator为了那个原因。并使用 Collections.sort()

class SizeComarator implements Comparator<Set<?>> {

    @Override
    public int compare(Set<?> o1, Set<?> o2) {
        return Integer.valueOf(o1.size()).compareTo(o2.size());
    }
}

    ArrayList<Set<String>> arrayList = new ArrayList<Set<String>>();
    Set<String> set1 = new HashSet<String>();
    set1.add("A");
    set1.add("B");
    Set<String> set2 = new HashSet<String>();
    set2.add("A");
    arrayList.add(set1);
    arrayList.add(set2);
    Collections.sort(arrayList, new SizeComarator());
    System.out.println(arrayList);

输出:

 [[A], [A, B]]

关于java - 按大小对 ArrayList 中的集合进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13039518/

相关文章:

c# - 使用 Collat​​ionInfo.Comparer 在 c# 和 SQL 之间实现一致排序

python - 查找 n 个元素集合的 k 不同元素子集的唯一组合

c++ - 如何从 C++ 中的集合中删除一个项目而不删除它?

java - 如何正确为带有转义字符的 String.matches() 创建正则表达式?

java - 为什么程序在我的 showPanel 方法中的 setVisible 处抛出错误 "cannot find symbol"?

Python3 使用 Lambda 和 Sort 对元组列表进行排序

javascript - 如何在 JavaScript 中对使用逗号分隔的数字 _and_ 符号的字符串数组进行最佳排序

java - 无法从 Office 365 门户打开我的应用程序。获取应用程序错误的未定义登录 URL

java - 将 Web 应用程序和 native 应用程序指向同一数据库/后端?

python - 使用 python 设置批处理变量