Как получить уникальные данные JSONObject из списка JSONObject путем сравнения указанного c значения ключа? - PullRequest
0 голосов
/ 06 августа 2020

Мне нравится,

List<JSONObject> jsonObjectList =[
      {id: "aaa",key2: "bbb",key3="eee"},
      {id: "aaa",key2: "bbb",key3="fff"},
      {id: "aab",key2: "ccc",key3="eee"}
    ]

Мне нужно уникальное значение jsonObjectList, сравниваемое по значению id в java.

Я пробовал

 List<JSONObject> distinctElements = jsonObjectList.stream()
                                .filter( distinctByKey(p -> p.getId()) )
                                .collect( Collectors.toList() );

Мне нужен следующий результат для примера выше:

distinctElements =[
  {id: "aaa",key2: "bbb",key3="fff"},
  {id: "aab",key2: "ccc",key3="eee"}
]

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

Что-то вроде:

List<JSONObject> distinctElements = jsonObjectList.stream()
    .collect(Collectors.groupingBy(JSONObject::getId, Collectors.toList()))
    .values().stream()
    .map(list -> list.get(0))
    .collect(Collectors.toList());

Вы также можете создать экземпляр реализации Set<>, который позволяет указать пользовательский keyExtractor.

0 голосов
/ 06 августа 2020

Вы можете попробовать использовать Set, поскольку он предотвращает дублирование объектов. И используйте библиотеку для сериализации JSON, например, как Gson.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...