Как разделить список на несколько списков, содержащих одинаковые элементы

#java #list

#java #Список

Вопрос:

У меня есть следующий список строк

 ["a", "a", "b", "b", "b"]
  

Я хочу создавать списки, в которых элементы повторяются более одного раза, для предыдущего примера это будет

 ["a", "a"], ["b", "b", "b"]
  

Как я могу добиться этого на Java?

РЕДАКТИРОВАТЬ: элементы могут быть не упорядочены в основном списке.

Комментарии:

1. Что вы пробовали до сих пор? Сообщество здесь, чтобы помочь вам в вашем коде, если вы не предоставите написанный вами код, мы не сможем вам помочь.

2. Я даже не знаю, что попробовать, у меня нет никаких идей

3. elmts.stream().collect(Collectors.groupingBy(Function.identity())).values() вы можете развить идею

4. Как насчет написания цикла, итерации по вашему списку ввода и создания результирующего объекта?

Ответ №1:

Вы можете сделать

 list.stream().collect(Collectors.groupingBy(Function.identity())).values();
  

Комментарии:

1. значения возвращают коллекцию, которую можно использовать .values().stream().collect(Collectors.toList()); для возврата списка

Ответ №2:

Это то, что вы хотите?

 private void splitDuplicateList(String[] arr) {
    Map<String, Integer> map = new HashMap<>();
    for (String item : arr) {
        if (!map.containsKey(item)) {
            map.put(item, 1);
        } else {
            map.put(item, map.get(item)   1);
        }
    }
    for (Map.Entry entry : map.entrySet()) {
        List<String> list = new ArrayList<>();
        for (int count = 0; count < (int) entry.getValue(); count  ) {
            list.add((String) entry.getKey());
        }
        System.out.println(list.toString());
    }
}