Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 比较映射值并进行排序_Java - Fatal编程技术网

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]