首页 > 解决方案 > 与 JAVA 中的 ArrayList 不同的值

问题描述

我有以下 ArrayLists: 1)List<MAP<String,String>>在 2) 中ArrayList<>()

[
[{name=a,age=33,city=NY},{name=b,age=23,city=NY},{name=d,age=83,city=CA}],
[{name=f,age=53,city=FL}],
[{name=d,age=11,city=TX},{name=a,age=13,city=CA}],
]

我想获得具有不同名称值的新 ArrayList:

[{a},{b},{d},{f}]

你能帮忙:)吗?

标签: javaarrayslistdistinct

解决方案


您可以遍历您的集合并将其添加到哈希集中以获取唯一名称。

List<Map<String,String>> input = new ArrayList<>();
    Set <String> uniqueNames = new HashSet<>();
    for( Map<String, String> stringStringMap : input )
        uniqueNames.add(stringStringMap.get("name"));

或者在 Java8 中,这可以使用流在一行中完成

  Set<String> uniqueNames = input.stream().map(a -> a.get("name")).collect(Collectors.toSet());

然后您可以使用 set 创建一个 ArrayList(正如您在问题中提到的 ArrayList )。


推荐阅读