我想通过将所有集合放在一个列表中来实现这一点,然后该列表将出现在 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/