根据subList的大小排序列表?

Mr.*_*ary 3 java sorting arraylist java-6

我有一份清单.我想排序超级列表取决于子列表大小.列表是动态的.
列表类型是<ArrayList<ArrayList<HashMap>>>Eg.

[ [{key1=value1,key2=value2}],[],[{key1=value1}],[{key1=value1},{key2=value2},{key3=value3}]  ]  
Run Code Online (Sandbox Code Playgroud)

排序后应显示

[[{key1=value1},{key2=value2},{key3=value3}], [{key1=value1,key2=value2}],[{key1=value1}],[]  ]  
Run Code Online (Sandbox Code Playgroud)

你能帮忙解决这个问题吗?

提前致谢.
Laxman chowdary

ala*_*inm 6

编辑:

如果要对按地图大小列表排序的地图列表列表进行排序,可以执行此操作.

请注意,您可以更改参数(o1o2)Integer.valueOf(o1.size()).compareTo(o2.size())的顺序以按降序排序.

public static <T> List<? extends List<T>> sortListByValue(List<? extends List<T>> list) {

    Collections.sort(list, new Comparator<List<T>>() {


        @Override
        public int compare(List<T> o1, List<T> o2) {
            //return Integer.compare(o1.size(), o2.size()); //JDK7 

            //Use this if you're using a version prior to 1.7.
            return Integer.valueOf(o1.size()).compareTo(o2.size());
        }
    });

    return list;
}   


public static void main(String[] args) {

    ArrayList<Map<String,String>> list1 = new ArrayList<>();
    list1.add(new HashMap<String, String>(){{ put("1", "a"); put("2", "b");}});
    list1.add(new HashMap<String, String>(){{ put("1", "a"); put("2", "b"); put("3", "c");}});
    list1.add(new HashMap<String, String>(){{ put("1", "a"); }});

    ArrayList<Map<String,String>> list2 = new ArrayList<>();
    list2.add(new HashMap<String, String>(){{ put("1", "a"); put("2", "b");}});
    list2.add(new HashMap<String, String>(){{ put("1", "a"); put("2", "b"); put("3", "c");}});

    ArrayList<Map<String,String>> list3 = new ArrayList<>();
    list3.add(new HashMap<String, String>(){{ put("1", "a"); put("2", "b");}});

    ArrayList<ArrayList<Map<String,String>>> list = new ArrayList<>();
    list.add(list1);
    list.add(list2);
    list.add(list3);
    System.out.println(list);
    System.out.println(sortListByValue(list));
}
Run Code Online (Sandbox Code Playgroud)