Как удалить повторяющиеся элементы в списке на java?

Пользователь

от felix , в категории: Java , 3 года назад

Как удалить повторяющиеся элементы в списке на java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от NicolasSsh , 3 года назад

@felix  Вы можете использовать HashSet для удаления повторяющихся элементов.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

class Main {
    public static void main(String[] args) throws Exception {
        ArrayList<Integer> array = new ArrayList<Integer>();

        array.addAll(Arrays.asList(5, 5, 6, 12, 62, 12, 92, 12, 92));

        Set<Integer> set = new HashSet<>(array);

        array.clear();
        array.addAll(set);

        for (int i = 0; i < array.size(); i++) {
            System.out.println(array.get(i));
        }

        // Вывод :
        // 5
        // 6
        // 12
        // 92
        // 62
    }
}

Пользователь

от violette_robel , 2 года назад

@felix 

В Java вы можете удалить повторяющиеся элементы в списке, используя классы из стандартной библиотеки Java. Вот несколько способов это сделать:

  1. Использование HashSet


HashSet автоматически удаляет повторяющиеся элементы. Вы можете создать новый HashSet из списка, чтобы удалить дубликаты:

1
2
3
List<String> listWithDuplicates = Arrays.asList("apple", "banana", "apple", "orange", "banana");
Set<String> setWithoutDuplicates = new HashSet<>(listWithDuplicates);
List<String> listWithoutDuplicates = new ArrayList<>(setWithoutDuplicates);


  1. Использование TreeSet


TreeSet - это отсортированный Set, который автоматически удаляет дубликаты. Вы можете создать новый TreeSet из списка, чтобы удалить дубликаты и получить отсортированный список:

1
2
3
List<String> listWithDuplicates = Arrays.asList("apple", "banana", "apple", "orange", "banana");
Set<String> setWithoutDuplicates = new TreeSet<>(listWithDuplicates);
List<String> listWithoutDuplicates = new ArrayList<>(setWithoutDuplicates);


  1. Использование Stream API


Stream API позволяет вам легко фильтровать повторяющиеся элементы. Вы можете использовать distinct() метод для получения потока без повторяющихся элементов, а затем преобразовать его обратно в список:

1
2
List<String> listWithDuplicates = Arrays.asList("apple", "banana", "apple", "orange", "banana");
List<String> listWithoutDuplicates = listWithDuplicates.stream().distinct().collect(Collectors.toList());


В каждом из этих случаев вы получите новый список без повторяющихся элементов.