0

正如主题中所述,我有一张地图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);
        }
4

1 回答 1

0

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

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

于 2013-10-14T09:57:36.630 回答