Отличительное значение от ArrayList в JAVA - PullRequest
0 голосов
/ 03 июля 2018

У меня есть следующие ArrayLists: 1) List<MAP<String,String>> in 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}]

Можете ли вы помочь:)?

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Используя Java 8 вы можете сделать

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

List<String> outList = inList.stream().map(m -> m.get("name")).distinct().collect(Collectors.toList());
0 голосов
/ 03 июля 2018

Вы можете перебрать свою коллекцию и добавить ее в набор хэшей, чтобы получить уникальные имена.

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 в вопросе).

...