Sobes.tech
Назад к вопросам
Middle
4

Как проверить, что списки равны по содержимому, но порядок не важен? List<String> actual = List.of("B", "A", "C"); List<String> expected = List.of("A", "B", "C");

Компании, где спрашивали
waysbits

Ответ от нейросети

sobes.tech AI

Чтобы проверить, что два списка содержат одинаковые элементы без учёта порядка, можно сравнить их как множества или отсортировать и сравнить.

Пример с использованием множества:

List<String> actual = List.of("B", "A", "C");
List<String> expected = List.of("A", "B", "C");

boolean areEqual = new HashSet<>(actual).equals(new HashSet<>(expected));
System.out.println(areEqual); // true

Если важна учёт количества повторяющихся элементов, то лучше использовать Collections.frequency или Map<String, Integer> для подсчёта количества каждого элемента.

Пример с сортировкой:

List<String> actualSorted = new ArrayList<>(actual);
List<String> expectedSorted = new ArrayList<>(expected);

Collections.sort(actualSorted);
Collections.sort(expectedSorted);

boolean areEqual = actualSorted.equals(expectedSorted);
System.out.println(areEqual); // true

Выбор метода зависит от требований к учёту повторов и производительности.