Подсчет дубликатов в Java 8 с использованием потоков на основе поляJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Подсчет дубликатов в Java 8 с использованием потоков на основе поля

Сообщение Anonymous »

Я пытаюсь подсчитать, сколько элементов дублируется из списка объектов Item. Элементы считаются дубликатами, если они имеют одинаковый идентификатор.

например.

Код: Выделить всё

[5, 5, 2, 4, 2]
Идентификаторы 5 и 2 встречаются более одного раза, поэтому ответ — 2.


Код: Выделить всё

public class Item {

int id;

public Item(int id) {
this.id = id;
}

public int getId() {
return id;
}
}

Код: Выделить всё

public class DuplicateItems {

public static int count(List items) {
int count = 0;
if (items.size() == 0) {
return 0;
}

items.sort(Comparator.comparingInt(Item::getId));
Map resultMap = new HashMap();
items.forEach(e -> resultMap.put(e, resultMap.getOrDefault(e, 0L) + 1L));
System.out.println(resultMap.size());
return count;
}

private static List convertToList(int[] values) {
List items = new ArrayList();
for (int num : values) {
items.add(new Item(num));
}
return items;
}

public static void main(String[] args) {
int[] itemsArray = {5, 5, 2, 4, 2};
List items = convertToList(itemsArray);
int duplicateCount = count(items);
System.out.println("Duplicate Count: " + duplicateCount);
}
}


Когда я запускаю программу, она говорит следующее:

< р>

Код: Выделить всё

Duplicate Count: 5
Почему значение не равно 2?

Подробнее здесь: https://stackoverflow.com/questions/596 ... d-on-field
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»