admin 管理员组

文章数量: 1184232


2024年3月6日发(作者:splitter分频器)

list转map key重复

如果将一个List转换为Map时,其中的key有重复,那么Java中的Map将只会保留最后一个匹配的键值对,之前的键值对将被覆盖。这意味着你不能通过重复的键值对实现多对一的映射。

如果你需要将多个值映射到同一个键上,那么最好的方法是使用Java 8中的新特性,如Stream API和ngBy()方法。例如,可以使用Stream API中的groupingBy()方法将特定字段的值作为键来分组。

另外,如果你需要保存所有的键值对,可以使用一个List来替代Map。例如,你可以创建一个名为“KeyValues”的类,其中包含两个属性:key和value,然后在List中保存该类的实例,以实现多个值的映射。

以下是一个使用Stream API和ngBy()方法来处理具有重复键的List的示例代码:

```。

List persons = new ArrayList<>();。

(new Person("John", 30));。

(new Person("Jane", 35));。

(new Person("John", 25));。

Map> map =

().collect(ngBy(Person::getName));。

```。

在上面的示例中,Person类具有两个属性:name和age。我们使用Stream API中的groupingBy()方法将人员列表按名称分组,并将结果保存在Map中。由于名称“John”有两个匹配项,因此该键将映射到一个包含两个Person实例的List中。


本文标签: 键值 方法 分组 例如