Вы должны использовать List.equals
:
public class HelloWorld{
public static void main(String[] args) {
List<Integer> list1 = Arrays.asList(1, 2, 3, 4);
List<Integer> list2 = Arrays.asList(1, 2);
boolean test = list1.equals(list2);
System.out.println("Similar " + test);
}
}
Так, equals
от List
будет проверять два списка равны полными условиями, одинакового размера и с одинаковыми значениями в этом и на том же самом положении. То, что вы сделали с HashSet
, будет проверять только, является ли один список подмножеством другого списка. Однако, если list1
является подмножеством list2
и list2
является подмножеством list1
, они равны (по математике). Но, List.equals()
быстрее, и вам нужно меньше памяти, а затем создайте два Sets
и выполните операции поднабора.
Однако {1,2,3}
равно {1,2,3}
но не {1,3,2}
с точки зрения List.equals
. Если вы хотите {1,2,3}
быть равно {1,3,2}
и {1,3,2,1,3}
то вы делаете это с Sets
:
public class HelloWorld{
public static void main(String[] args) {
List<Integer> list1 = Arrays.asList(1, 2, 3, 4);
List<Integer> list2 = Arrays.asList(1, 2);
Set<Integer> similar2 = new HashSet<Integer>(list2);
Set<Integer> similar1 = new HashSet<Integer>(list1);
boolean test = similar1.equals(similar2);
System.out.println("Similar " + test);
}
}
Set.equals
работа разные, то List.equals
, так как он проверяет, если каждый элемент в similar1
существует в similar2
(итерация), это Безразлично Не заботьтесь о заказе. (Спасибо @ brso05 за указание на это).
Что вы подразумеваете под _return_? Вы хотите переместить все это в метод, имеющий возвращаемый тип 'boolean' и' return' значение 'boolean', соответствующее результату сравнения? Что мешает вам это делать? –
Кроме того, вы рассматриваете порядок, дубликаты и т. Д.? –
Возможно, вы хотите: 'System.out.println (« Similar »+ Similar.retainAll (list2));' – brso05