【问题标题】:Distinct value from ArrayList in JAVA与 JAVA 中的 ArrayList 不同的值
【发布时间】:2018-07-03 09:04:29
【问题描述】:

我有以下 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}]

你能帮忙吗:)?

【问题讨论】:

  • 您在谈论数组,但随后说它是ArrayList。现在是什么? ArrayList 与数组无关。这是一个List,它在内部使用了一些数组。数组是固定长度的结构,Lists 更加动态和灵活。
  • 你说 MAP ,但哪个是关键&哪个是价值以及你如何适应 List ,我不明白 ????
  • ArrayList2.get(0).get("name") = a

标签: java arrays list distinct


【解决方案1】:

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

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 问题)。

【讨论】:

  • 我没听懂。你能用完整的例子再次解释一下吗?假设问题中示例的 ArrayList 的名称是“Arr1”
  • @eyal1506 :遍历数组列表 Arr1 。对其中的每个元素执行 element.get(0).get("name") 并将结果添加到集合中。您的集合现在是一个唯一的名称列表。将此集合转换为列表。希望这会有所帮助。
【解决方案2】:

使用 Java 8 你可以做到

//List<Map<String, String>> inList = new ArrayList<>(); 

List<String> outList = inList.stream().map(m -> m.get("name")).distinct().collect(Collectors.toList());

【讨论】:

    猜你喜欢
    • 2011-05-14
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2014-04-09
    • 1970-01-01
    • 2014-07-07
    相关资源
    最近更新 更多