Java 如何获取树映射值的集合并对其进行排序

Java 如何获取树映射值的集合并对其进行排序,java,sorting,arraylist,treemap,Java,Sorting,Arraylist,Treemap,例如,正如主题中所述,我得到了一个mapTreeMap map=newtreemap()我希望获得值的集合,然后按ArrayList的长度对其排序,并在控制台上仅打印长度大于3的值 是我做的,它很管用但它很难看。我能做得更好吗 我的解决方案: Object[] values = map.values().toArray(); Arrays.sort(values, new Comparator<Object>() { @Override

例如,正如主题中所述,我得到了一个map
TreeMap map=newtreemap()
我希望获得值的集合,然后按
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);
        }
Object[]values=map.values().toArray();
排序(值,新的比较器(){
@凌驾
公共整数比较(对象o1、对象o2){
ArrayList a1=(ArrayList)o1;
ArrayList a2=(ArrayList)o2;
返回-(a1.size()-a2.size());
}
});
用于(对象o:值){
ArrayList=(ArrayList)o;
如果(list.size()>=3)
System.out.println(list.size()+“:”+(ArrayList)o);
}

我猜Rohit Jain暗示的是,如果排序的唯一目的是跳过不符合长度标准的条目,那么对数组进行排序然后对其进行迭代是非常昂贵的


您也可以只对其进行迭代,并在每次迭代中检查所检查的元素是否足够长,以便打印。

如果您只想打印长度大于3的arraylist,那么为什么要对其进行排序?为什么
对象[]
?你知道那种类型。它是
ArrayList
…我知道类型,当我将它转换到那里时,我得到一个异常。。。做对了。