如何在java中对列表内部的映射进行排序 List consolidErr=new LinkedList(); Map m1=新的HashMap(); m1.投入(“id”,“1”); m1.卖出(“价值”、“价值1”); Map m2=新的HashMap(); m2.put(“id”、“2”); m2.卖出(“价值”、“价值2”); Map m3=新的HashMap(); m3.put(“id”、“3”); m3.卖出(“价值”、“价值3”); 将所有m1、m3和m2添加到列表中
然后根据地图中的ID对地图进行排序现在我希望列表中的地图为m1、m2和m3如何在java中对列表内部的映射进行排序 List consolidErr=new LinkedList(); Map m1=新的HashMap(); m1.投入(“id”,“1”); m1.卖出(“价值”、“价值1”); Map m2=新的HashMap(); m2.put(“id”、“2”); m2.卖出(“价值”、“价值2”); Map m3=新的HashMap(); m3.put(“id”、“3”); m3.卖出(“价值”、“价值3”); 将所有m1、m3和m2添加到列表中,java,collections,Java,Collections,然后根据地图中的ID对地图进行排序现在我希望列表中的地图为m1、m2和m3 现在我想根据地图中的id进行排序,我使用列表的迭代进行排序,并将地图的第一个id保留为检查器,然后与下一个id进行比较。如果有比使用内置方法更好的方法,请给出您的想法。我现在正在使用气泡排序。这是java中最简单的方法(或者至少,在最少混乱的情况下)使用自定义比较器 其思想是,如果您有具有自然排序的对象(任何扩展为可比较的对象),您可以要求进行排序,例如 List<Map<String,String>
现在我想根据地图中的id进行排序,我使用列表的迭代进行排序,并将地图的第一个id保留为检查器,然后与下一个id进行比较。如果有比使用内置方法更好的方法,请给出您的想法。我现在正在使用气泡排序。这是java中最简单的方法(或者至少,在最少混乱的情况下)使用自定义比较器 其思想是,如果您有具有自然排序的对象(任何扩展为可比较的对象),您可以要求进行排序,例如
List<Map<String,String>> consolidErr = new LinkedList<Map<String,String>>();
Map m1= new HashMap<String,String>();
m1.put("id","1");
m1.put("value","value1");
Map m2= new HashMap<String,String>();
m2.put("id","2");
m2.put("value","value2");
Map m3= new HashMap<String,String>();
m3.put("id","3");
m3.put("value","value3");
add all m1,m3 and m2 in list
Collections.sort(列表。。
否则,您只需传入一个比较器,该比较器描述您希望如何将对象与您想要的任何自定义逻辑进行比较,例如(粗略地说,这是我不知道的,没有错误检查,但应该足以让您了解情况)——
列表控制台RR=。。。
在这里输入代码
Collections.sort(consolidErr,newcomparator(){
公共整数比较(映射a,映射b){
返回a.get(“id”).compareTo(b.get(“id”);}
})
在java中实现这一点的最简单方法(或者至少是用最少的混乱)是使用自定义比较器
其思想是,如果您有具有自然排序的对象(任何扩展为可比较的对象),您可以要求进行排序,例如
List<Map<String,String>> consolidErr = new LinkedList<Map<String,String>>();
Map m1= new HashMap<String,String>();
m1.put("id","1");
m1.put("value","value1");
Map m2= new HashMap<String,String>();
m2.put("id","2");
m2.put("value","value2");
Map m3= new HashMap<String,String>();
m3.put("id","3");
m3.put("value","value3");
add all m1,m3 and m2 in list
Collections.sort(列表。。
否则,您只需传入一个比较器,该比较器描述您希望如何将对象与您想要的任何自定义逻辑进行比较,例如(粗略地说,这是我不知道的,没有错误检查,但应该足以让您了解情况)——
列表控制台RR=。。。
在这里输入代码
Collections.sort(consolidErr,newcomparator(){
公共整数比较(映射a,映射b){
返回a.get(“id”).compareTo(b.get(“id”);}
})
我将使用
作为列表的包装。通过在创建时向构造函数提供比较器,可以确保列表在每次向列表中插入新元素后都保持排序。我将使用
作为列表的包装器。通过在创建时向构造函数提供比较器,可以确保列表在每次向列表中插入新元素后都保持排序。在Java 8中,我们可以在一行中对
映射的列表进行排序
List<Map<String,String>> consolidErr = ...
enter code here
Collections.sort(consolidErr, new Comparator<Map<String,String>>(){
public int compare(Map<String,String> a, Map<String,String> b){
return a.get("id").compareTo(b.get("id"));}
})
list.sort(Comparator.comparing((Map-mp)->mp.get(“Id”));
在Java8中,我们可以在一行中对映射的列表进行排序
List<Map<String,String>> consolidErr = ...
enter code here
Collections.sort(consolidErr, new Comparator<Map<String,String>>(){
public int compare(Map<String,String> a, Map<String,String> b){
return a.get("id").compareTo(b.get("id"));}
})
list.sort(Comparator.comparing((Map-mp)->mp.get(“Id”));
使用集合。排序@RohitJain感谢您的回复,但基于地图的哪个对象对其进行排序id或map的值。?搜索id
键并获取其值。感谢您的回复@RohitJainUse集合。排序@RohitJain感谢您的回复,但基于地图的哪个对象对其进行排序id或map的值地图。?搜索id
键,并获取其值。感谢您的回复@RohitJain