gpt4 book ai didi

java - 根据子列表的大小对列表列表进行排序?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:49:22 26 4
gpt4 key购买 nike

我有一个列表列表。我想根据子列表的大小对 super 列表进行排序。列表是动态的。
列表类型为 <ArrayList<ArrayList<HashMap>>>例如。

[ [{key1=value1,key2=value2}],[],[{key1=value1}],[{key1=value1},{key2=value2},{key3=value3}]  ]  

排序后应该显示

[[{key1=value1},{key2=value2},{key3=value3}], [{key1=value1,key2=value2}],[{key1=value1}],[]  ]  

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

提前致谢。
拉克斯曼杂烩

最佳答案

已编辑:

如果您想按 map 列表大小对 map 列表列表进行排序,您可以这样做。

请注意,您可以在 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));
}

关于java - 根据子列表的大小对列表列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11429001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com