Если вы используете Eclipse Collections , вы можете использовать topOccurrences
.
List<Integer> list =
Arrays.asList(1, 1, 2, 3, 5, 8, 13, 21, 21, 61, 98, 15, 25, 41, 67,55, 89, 89, 89, 89 );
MutableList<ObjectIntPair<Integer>> top = Lists.adapt(list).toBag().topOccurrences(1);
System.out.println(top.makeString());
Если вам нужны все дубликаты, вы можете использовать selectDuplicates
.Это отфильтровывает 1, 21 и 89.
MutableBag<Integer> dupes = Lists.adapt(list).toBag().selectDuplicates();
System.out.println(dupes.toStringOfItemToCount());
Вы также можете сделать это без упаковки примитивов.
IntList list =
IntLists.mutable.with(1, 1, 2, 3, 5, 8, 13, 21, 21, 61, 98, 15, 25, 41, 67, 55, 89, 89, 89, 89);
MutableList<IntIntPair> top = list.toBag().topOccurrences(1);
System.out.println(top.makeString());
IntBag dupes = list.toBag().selectDuplicates();
System.out.println(dupes.toStringOfItemToCount());
Примечание: я являюсь коммиттером для коллекций Eclipse.