按大小排序ArrayList中的集合

pra*_*432 5 java sorting set

我想通过将所有集合放在一个列表中然后在一个映射中来实现这一点,其中键是大小.我知道一个集合的最大大小(给我),所以我可以在0和那个数字之间迭代,得到每个列表然后迭代每个列表并将每个集合放在一个arraylist中.

然而,这看起来非常笨拙 - 有没有更好的方法呢?有什么办法可以根据尺寸做一个比较器功能吗?

谢谢

Ami*_*nde 8

您可以为此提供比较器.并使用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);
Run Code Online (Sandbox Code Playgroud)

输出:

 [[A], [A, B]]
Run Code Online (Sandbox Code Playgroud)