如主题所述,我有一张地图TreeMap<String, ArrayList<String>> map = new TreeMap<String, ArrayList<String>>();
,我希望获得值集合,然后按ArrayList
的长度对其进行排序,并在控制台上打印只有更长的值比3.
我做到了,它有效,但它很难看。我可以做得更好吗?
我的解决方案:
Object[] values = map.values().toArray();
Arrays.sort(values, new Comparator<Object>() {
@Override
public int compare(Object o1, Object o2) {
ArrayList<String> a1 = (ArrayList<String>) o1;
ArrayList<String> a2 = (ArrayList<String>) o2;
return -(a1.size() - a2.size());
}
});
for (Object o : values) {
ArrayList<String> list = (ArrayList<String>) o;
if (list.size() >= 3)
System.out.println(list.size() + ": " + (ArrayList<String>) o);
}
答案 0 :(得分:0)
我想Rohit Jain暗示的是,对数组进行排序然后迭代它是非常昂贵的,如果排序的唯一目的是跳过不符合长度标准的条目。
你也可以只迭代它并在每次迭代中检查被检查的元素是否足够长以便打印。