Java 比较映射值并进行排序
这是我的课 公共阶层人士{Java 比较映射值并进行排序,java,Java,这是我的课 公共阶层人士{ int id; int salary; Map<String,List<String>> house; //getter and setters omitted for brevity public static void main(String[] args) { // TODO Auto-generated method stub Map<String,List<String>>
int id;
int salary;
Map<String,List<String>> house;
//getter and setters omitted for brevity
public static void main(String[] args) {
// TODO Auto-generated method stub
Map<String,List<String>> map =new HashMap<>();
map.put("KEY_1",Arrays.asList("3") ) ;
map.put("KEY_2",Arrays.asList("House_1") ) ;
map.put("KEY_3",Arrays.asList("House_13") ) ;
Map<String,List<String>> map2 =new HashMap<>();
map2.put("KEY_1",Arrays.asList("1") ) ;
map2.put("KEY_2",Arrays.asList("House_2") ) ;
map2.put("KEY_3",Arrays.asList("House_22") ) ;
Map<String,List<String>> map3 =new HashMap<>();
map3.put("KEY_1",Arrays.asList("2") ) ;
map3.put("KEY_2",Arrays.asList("House_3") ) ;
map3.put("KEY_3",Arrays.asList("House_33") ) ;
Person p1 = new Person(1,1000, map );
Person p2 = new Person(2,2000, map2 );
Person p3 = new Person(3,3000, map3 );
List<Person> personList = new ArrayList();
personList.add(p1);
personList.add(p2);
personList.add(p3);
for (Person p : personList)
{
for(Entry<String, List<String>> personMap : p.getHouse().entrySet() )
{
System.out.println( "value of key is -->" + personMap.getKey() + " value is " + personMap.getValue() );
}
}
}
}
但我的预期产出是
键的值为-->键1的值为[3]键的值为-->键3的值
是键的[House_13]值是-->键的[House_2]值是[House_1]
键的值为-->键1的值为[2]键的值为-->键3的值
是键的[House_33]值是-->键的[House_2]值是[House_3]
键的值为-->键\u 1值为[1]键的值为-->键\u 3值
是键的[House_22]值是-->键的[House_2]值是[House_2]
i、 e如果具有键1的对象具有最高值,则应首先将其放入,然后我们也需要根据键2对其进行排序。您的示例不完整,请始终发布a并提供清晰的问题描述。例如,未包含您的
getElements()
方法,并且未定义消息
但是,从这个不完整的示例中,我可以看出,您希望按照字符串键的词法顺序,以升序遍历一个映射
为此,您必须知道,Map.entrySet()
返回类Set
的一个实例,并使用For-each循环,该循环使用其迭代器,并且集合的迭代器不保证条目的任何特定迭代顺序
但是,您可以使用该类:
进一步提供其键的总顺序的映射。该映射根据其键的自然顺序进行排序,或由排序映射创建时通常提供的比较器进行排序。该顺序在迭代排序映射的集合视图(由entrySet、keySet和values方法返回)时反映出来.提供了几个附加操作以利用订购。(此接口是SortedSet的地图模拟。)
如果您希望基于值而不是键遍历地图,请参考现有答案。我添加了最小的、可重复的示例,并更改了代码片段
value of key is -->KEY_1 value is [3]
value of key is -->KEY_3 value is [House_13]
value of key is -->KEY_2 value is [House_1]
value of key is -->KEY_1 value is [1]
value of key is -->KEY_3 value is [House_22]
value of key is -->KEY_2 value is [House_2]
value of key is -->KEY_1 value is [2]
value of key is -->KEY_3 value is [House_33]
value of key is -->KEY_2 value is [House_3]