Как сравнить два списка java
Чтобы сравнить два списка в Java , можно использовать метод equals() из класса java.util.List . Этот метод сравнивает содержимое двух списков.
import java.util.Arrays; import java.util.List; public class ListComparisonExample public static void main(String[] args) // Создаем два списка ListInteger> list1 = Arrays.asList(1, 2, 3); ListInteger> list2 = Arrays.asList(1, 2, 3); // Сравниваем два списка if (list1.equals(list2)) System.out.println("Списки равны"); > else System.out.println("Списки не равны"); > > >
В этом примере списки list1 и list2 содержат одни и те же элементы в том же порядке, поэтому метод equals() вернет true
Java. ArrayList. Сравнить содержимое двух листов без учета последовательности
Необходим метод выясняющий равны ли значения их ячеек без учета их порядка и последовательности то есть эти можно считать равными = true; Имея в виду что таких элементов может быть и много. Можно использовать любые фичи кроме фраимворков. Может есть короткий способ, наверняка сан предусмотрел такое дело. Может кто знает?
Отслеживать
задан 8 ноя 2016 в 11:44
5,327 11 11 золотых знаков 58 58 серебряных знаков 117 117 бронзовых знаков
containsAll(Collection c) пробовали??>
8 ноя 2016 в 11:48
@MrFylypenko если у второго списка, например, убрать один из «a» (например последний), то containsAll покажет true все равно
8 ноя 2016 в 11:54
Не знал про этот метод спасибо!
8 ноя 2016 в 11:55
@АлексейШиманский верно, покажет true, но он не будет сортировать массивы и надеюсь решит поставленные задачи. Ваш вариант мне тоже нравится.
Как сравнить две коллекции java
Самая понятная статья, дающая четкое и внятное понимание разницы интерфейсов, и их использования. Интерфейсы поданы под углом, позволяющим быстро уловить соль вопроса. Столько прочитал и везде пишут казенным языком формальные вещи типа такого: «Это — окно, а это — дверь. И то и другое — выход на улицу. Как хочешь так и выходи.».
Майя Уровень 35
4 июля 2023
понятно в чем разница! хорошее объяснение
30 апреля 2023
Хорошо написана статья, но хочется продолжения! Согласна с DagothUr, как быть с String?
DagothUr Уровень 15
23 февраля 2023
Вот показали, как с числовыми значениями, а с String? По hash сортировать что ли String?
16 января 2023
Нифига не пойму. Так с Comparable тоже можно сравнить по скорости. Так в чем разница сравнения между Comparable и Comparator? Зачем мне создавать отдельный класс для сравнения того, что можно сравнить с помощью compareTo()? Уже третий день ищу разницу. И везде пишут, «Нуууу, с компарабл можно сравнить по скорости естественной сортировкой, а вот с компаратором зато можно сравнить по скорости неестественной соритровкой, ведь числа то нельзя сравнивать естественной, что вы!» Где разница то?
Kurama Уровень 50
11 ноября 2022
Хоть мы и приходили это кучу раз, но не забываем про сахар:
Collections.sort(cars, (o1, o2) -> o1.getMaxSpeed() - o2.getMaxSpeed());
или вообще
cars.sort((o1, o2) -> o1.getMaxSpeed() - o2.getMaxSpeed());
Сергей Дьяконов Уровень 47
11 октября 2022
тут вроде ошибка, public class MaxSpeedCarComparator должен быть STATIC. в таком виде как здесь его объект не создается в MAIN.
Проверьте, равны ли два списка в Java
Списки на Java упорядочены по природе. Таким образом, два списка считаются равными, если они содержат одинаковые элементы в одинаковом порядке. В этом уроке мы увидим, как сравнить два списка на равенство в Java.
Мы также рассмотрим способы сравнения элементов в двух списках и игнорирования их порядка.
Порядок поддержания равенства списков:
Как мы знаем, два списка равны, когда они имеют одинаковые элементы и в одинаковом порядке. Поэтому, если мы заботимся о порядке, мы можем использовать метод equals () для проверки равенства:
public void equalityCheckOfTwoLists() <
List
List
List
assertTrue(list1.equals(list2));
assertFalse(list1.equals(list3));
И list1, и list3 содержат одинаковые элементы , но в разных порядках и поэтому считаются неравными.
Порядок игнорирования равенства списков:
Что если мы хотим игнорировать порядок элементов для проверки на равенство?
Много раз все, что мы хотим, это проверить, содержат ли два списка одинаковые элементы, независимо от их порядка в списке. Давайте рассмотрим способы достижения этого:
1. Сортировка списков и сравнение:
Если оба списка нулевые , мы вернем true . Или же, если только один из них указывает на нулевое значение или размер () двух списков отличается, мы вернем false . Если ни одно из этих условий не выполняется, мы сначала отсортируем два списка, а затем сравним их:
public
if (list1 == null && list2 == null ) <
return true ;
//Only one of them is null
else if (list1 == null || list2 == null ) <
return false ;
else if (list1.size() != list2.size()) <
return false ;
//copying to avoid rearranging original lists
list1 = new ArrayList
list2 = new ArrayList
Collections.sort(list1);
Collections.sort(list2);
return list1.equals(list2);
Обратите внимание, что мы создали копии двух списков, чтобы гарантировать, что элементы в исходных списках остаются нетронутыми .
2. С помощью Set / содержит () Проверьте:
Если данные в наших списках уникальны, т.е. нет дублирования, мы можем просто создать TreeSets из заданных списков и затем сравнить их с помощью equals () :
public
if (list1 == null && list2 == null ) <
return true ;
//Only one of them is null
else if (list1 == null || list2 == null ) <
return false ;
else if (list1.size() != list2.size()) <
return false ;
Set
Set
return set1.equals(set2);
Мы можем еще больше упростить это, просто установив проверку на проверку содержимого () вместо создания наборов :
return list1.containsAll(list2) && list2.containsAll(list1);
Однако обратите внимание, что эти подходы ( contains () check / With Sets ) потерпят неудачу, если в нашем наборе данных есть повторы. Например:
List
List
// will return true, but actual value should be false
System.out.println(list1.isEquals(list2));
В приведенном выше примере l ist1 содержит одно 2 и два 3, а list2 содержит два 2 и одно 3 . Тем не менее, эта форма реализации будет неверно возвращать true .
3. Apache Commons:
Вместо написания собственного кода мы можем выбрать для выполнения утилиту Apache Commons Collections :
List
List
System.out.println(CollectionUtils.isEqualCollection(list1, list2)); //true
Метод isEqualCollection () возвращает true, если две коллекции содержат абсолютно одинаковые элементы с одинаковым количеством элементов.
Вывод:
В этом уроке мы научились проверять, равны ли два списка в Java. Теперь мы знаем, что по умолчанию два списка равны, если они имеют одинаковые элементы в одинаковом порядке.
Мы также обсудили подходы, которые мы можем использовать для проверки равенства списков, если мы не заботимся о порядке элементов.
Оставьте первый комментарий.
Опубликовано на Java Code Geeks с разрешения Шубхры Шриваставы, партнера нашей программы JCG . Смотрите оригинальную статью здесь: Проверьте, равны ли два списка в Java
Мнения, высказанные участниками Java Code Geeks, являются их собственными.