对 Hashmap Arraylist 进行排序或反转

kee*_*kee 2 java sorting

我一直在练习 Java 代码挑战。

这是我的代码

LinkedHashMap<String, String> user = new LinkedHashMap<String, String>();
LinkedHashMap<String, String> user1 = new LinkedHashMap<String, String>();
ArrayList<HashMap<String , String>> list = new ArrayList<HashMap<String , String>>();

user.put("name", "dave");
user.put("age", "27");
user.put("hobby", "guitar");

user1.put("name", "adam");
user1.put("age", "15");
user1.put("hobby", "sports");

list.add(user);
list.add(user1);

System.out.println(list.toString());
Run Code Online (Sandbox Code Playgroud)

输出:

 [{name=dave, age=27, hobby=guitar}, {name=adam, age=15, hobby=sports}]
Run Code Online (Sandbox Code Playgroud)

无论如何,我可以使用散列图中的任何键对这个数组列表进行排序或反转,例如按名称值排序或按年龄值排序?

Rei*_*las 6

“……我是否可以通过使用哈希图中的任何键来排序或反转这个数组列表,例如按名称值排序或按年龄值排序?……”

要反转List,请使用Collection#reverse方法。

Collections.reverse(list);
Run Code Online (Sandbox Code Playgroud)

对于排序,请使用List#sortComparator#comparing方法。

list.sort(Comparator.comparing(x -> x.get("name")));
Run Code Online (Sandbox Code Playgroud)
list.sort(Comparator.comparing(x -> x.get("age")));
Run Code Online (Sandbox Code Playgroud)

每个例程的输出。

[{name=adam, age=15, hobby=sports}, {name=dave, age=27, hobby=guitar}]
Run Code Online (Sandbox Code Playgroud)

  • 或者 Java 21 中的 [`List#reversed`](https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/List.html#reversed()) +。请参阅 [*JEP 431:排序集合*](https://openjdk.org/jeps/431)。 (2认同)