РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
475 of 1163 menu

Метод distinct

Метод distinct класса Stream удаляет повторяющиеся элементы из потока и возвращает новый поток, содержащий только уникальные значения. Метод не принимает параметров. Уникальность определяется с помощью метода equals для объектов и сравнения значений для примитивов. Метод является промежуточной операцией и возвращает новый поток, поэтому его можно комбинировать с другими операциями потока, такими как filter, map или collect.

Синтаксис

Stream<T> distinct()

Пример

Давайте создадим поток из списка с повторяющимися элементами и удалим дубликаты:

import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> numbers = List.of(1, 2, 2, 3, 3, 3, 4, 5, 5); List<Integer> res = numbers.stream() .distinct() .collect(Collectors.toList()); System.out.println(res); } }

Результат выполнения кода:

[1, 2, 3, 4, 5]

Пример

Давайте применим метод distinct к потоку строк с повторяющимися значениями:

import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<String> strings = List.of("a", "b", "a", "c", "b", "d", "c"); List<String> res = strings.stream() .distinct() .collect(Collectors.toList()); System.out.println(res); } }

Результат выполнения кода:

[a, b, c, d]

Пример

Давайте скомбинируем метод distinct с методом filter, чтобы сначала удалить дубликаты, а затем оставить только чётные числа:

import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> numbers = List.of(1, 2, 2, 3, 4, 4, 5, 6, 6); List<Integer> res = numbers.stream() .distinct() .filter(n -> n % 2 == 0) .collect(Collectors.toList()); System.out.println(res); } }

Результат выполнения кода:

[2, 4, 6]

Пример

Давайте подсчитаем количество уникальных элементов в потоке с помощью метода distinct и метода count:

import java.util.List; public class Main { public static void main(String[] args) { List<String> strings = List.of("abcde", "12345", "abcde", "12345", "abcde"); long res = strings.stream() .distinct() .count(); System.out.println(res); } }

Результат выполнения кода:

2

Смотрите также

  • метод filter,
    который фильтрует элементы потока
  • метод sorted,
    который сортирует элементы потока
  • метод collect,
    который собирает элементы потока в коллекцию
  • метод count,
    который возвращает количество элементов потока
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить