【问题标题】:ArrayList of ArrayList of Integers in lexicographic order in JavaJava中按字典顺序排列的整数的ArrayList的ArrayList
【发布时间】:2016-11-30 22:14:02
【问题描述】:

我有一个ArrayList<ArrayList<Integer>>,我想对它进行排序,以便我将所有列表按字典顺序排列。

例如:

排序前的列表(逗号分隔一个列表):2 6 8, 1 3 6, 1 2 8

排序后我想得到什么:1 2 8, 1 3 6, 2 6 8

我看到我可以使用Collections.sort,但看到它仅用于比较单个索引处的值:

Collections.sort(lists, new Comparator<ArrayList<Integer>>(){
    public int compare(ArrayList<Integer> list1, ArrayList<Integer> list2){
        return list1.get(0).compareTo(list2.get(0));
    }
});

但是这样我的结果将是错误的 (1 3 6, 1 2 8, 2 6 8)。

是否可以使用类似这种结构的东西来比较列表中的所有值而不是一个值?所有列表的大小相同。

【问题讨论】:

    标签: java sorting arraylist integer


    【解决方案1】:

    只需遍历Comparator 中的两个集合: (这不会检查相同的长度,您可能需要添加它)

    Collections.sort(lists, new Comparator<ArrayList<Integer>>(){
        public int compare(ArrayList<Integer> list1, ArrayList<Integer> list2){
            int result = 0;
            for (int i = 0; i <= list1.size() - 1 && result == 0; i++) 
            {
                result = list1.get(i).compareTo(list2.get(i));
            }
            return result;
        }
    });
    

    【讨论】:

    • 感谢您的回答和纠正我的拼写错误。 :)
    猜你喜欢
    • 1970-01-01
    • 2019-08-02
    • 2014-06-08
    • 2012-05-30
    • 2011-01-30
    • 2011-03-01
    • 1970-01-01
    • 2016-08-05
    • 2012-01-31
    相关资源
    最近更新 更多