Уникальные элементы потока в Java
Метод distinct опирается на equals и
hashCode элементов. Он пропускает дубликаты
и оставляет порядок первого появления каждого
уникального значения.
Из списка с повторами можно получить набор уникальных чисел:
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> nums = List.of(2, 5, 2, 8, 5, 1);
List<Integer> unique = nums.stream()
.distinct()
.toList();
System.out.println(unique);
}
}
Для строк distinct часто ставят после
нормализации регистра, чтобы считать одинаковыми
варианты вроде "Api" и "api":
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> tags = List.of("api", "API", "log", "api");
List<String> unique = tags.stream()
.map(String::toLowerCase)
.distinct()
.toList();
System.out.println(unique);
}
}
Дан код:
var nums = List.of(1, 1, 2, 3, 3, 4);
Оставьте уникальные числа и выведите их количество.
Дан код:
var strings = List.of("go", "Go", "rust", "go");
Приведите к нижнему регистру, уберите дубликаты и выведите список.