Предположим, у нас есть список String
, например:
List<String> strList = new ArrayList<>(5);
// insert up to five items to list.
Тогда мы можем удалить повторяющиеся элементы несколькими способами.
До Java 8
List<String> deDupStringList = new ArrayList<>(new HashSet<>(strList));
Примечание: Если мы хотим сохранить порядок вставки, тогда нам нужно использовать LinkedHashSet
вместо HashSet
Использование гуавы
List<String> deDupStringList2 = Lists.newArrayList(Sets.newHashSet(strList));
Использование Java 8
List<String> deDupStringList3 = strList.stream().distinct().collect(Collectors.toList());
Примечание: В случае, если мы хотим собрать результат в конкретной реализации списка , например. LinkedList
тогда мы можем изменить приведенный выше пример следующим образом:
List<String> deDupStringList3 = strList.stream().distinct()
.collect(Collectors.toCollection(LinkedList::new));
Мы можем использовать parallelStream
также в приведенном выше коде, но это может не дать ожидаемых преимуществ производительности. Проверьте этот вопрос для более.