两个 Arraylist 有相同的元素但顺序不同,它们是否相等?
Two Arraylists have the same elements but in different order, are they equal?
我有两个数组列表,每个都有 3 个元素。 PL1
和 INITIAL1
是数组列表的。 INITIAL1
将用值初始化,PL1
将被动态编辑。如果两者相等,则执行一个操作,否则什么都不做。
PL1 = [00, 01, 02]
INITIAL1 = [01, 02, 00]
值相同但顺序不同。
这两个相等吗?
我能得出两者等价的结论并执行一些操作吗?
if (INITIAL1.size() == PL1.size() && INITIAL1.containsAll(PL1)) {
//do something
}
java 中的两个数组列表如果包含相同数量的元素、相同的内容和相同的顺序,则称它们相等。要检查它,您可以使用 .equals() 函数
例如:
import java.util.*;
public class HelloWorld{
public static void main(String []args){
ArrayList<String> list1=new ArrayList<String>();//Creating arraylist
list1.add("Ravi");//Adding object in arraylist
list1.add("Vijay");
list1.add("Ravi");
list1.add("Ajay");
//Invoking arraylist object
System.out.println(list1);
ArrayList<String> list2=new ArrayList<String>();//Creating arraylist
list2.add("Ravi");//Adding object in arraylist
list2.add("Vijay");
list2.add("Ravi");
list2.add("Ajay");
//Invoking arraylist object
System.out.println(list2);
if(list1.equals(list2)) {
System.out.println("yes");
}
}
}
您的数组列表不会计算为相等,因为它们具有不同顺序的不同元素。
如果您希望它们在不排序的情况下评估为真,请查看此 link
Java ArrayList - how can I tell if two lists are equal, order not mattering?
如果每个列表中的元素通过 equals 方法完全相同,包括它们在列表中的顺序,则认为两个列表相等。
所以回答你的问题,
Values are same but in different order. are these two equal?
由于顺序不同,所以不相等
will I be able to conclude that both are equivalent and perform some operation?
我不知道你为什么需要这样做,但这是可能的。
您可以使用 HashMap 将 INITIALS 存储为键并检查 PL1 的大小是否与 Map 的大小相同并且 Map 包含 PL1 中的所有值通过等于检查。
或者简单地使用 Apache Commons CollectionUtils.isEqualCollection(集合 a,集合 b)
package com.practice;
import java.util.ArrayList;
import java.util.List;
public class twoArray
{
public static void main(String[] args)
{
List<Integer> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
list1.add(00);
list1.add(01);
list1.add(02);
System.out.println(list1 +" Array list 1"); // [00,01,02] Array list 1
list2.add(01);
list2.add(02);
list2.add(00);
System.out.println(list2 +" Array list 2"); // [01,02,00] Array list 2
System.out.println(list1.equals(list2)); // output: **false**
}
}
我希望在看完这个例子后你有一个想法。
由于 ArrayList 在内部使用索引(位置)来存储值。
根据您的要求 [00,01,02] 和 [01,02,00] 值相同并且
顺序不同,因此您使用 ArrayList 它 returns 错误!它是
不等于 and 并且您将无法执行任何操作。
对此最好的解决方案是 sort PL1 和 INITIAL1
它 returns 是真的。
我有两个数组列表,每个都有 3 个元素。 PL1
和 INITIAL1
是数组列表的。 INITIAL1
将用值初始化,PL1
将被动态编辑。如果两者相等,则执行一个操作,否则什么都不做。
PL1 = [00, 01, 02]
INITIAL1 = [01, 02, 00]
值相同但顺序不同。 这两个相等吗?
我能得出两者等价的结论并执行一些操作吗?
if (INITIAL1.size() == PL1.size() && INITIAL1.containsAll(PL1)) {
//do something
}
java 中的两个数组列表如果包含相同数量的元素、相同的内容和相同的顺序,则称它们相等。要检查它,您可以使用 .equals() 函数
例如:
import java.util.*;
public class HelloWorld{
public static void main(String []args){
ArrayList<String> list1=new ArrayList<String>();//Creating arraylist
list1.add("Ravi");//Adding object in arraylist
list1.add("Vijay");
list1.add("Ravi");
list1.add("Ajay");
//Invoking arraylist object
System.out.println(list1);
ArrayList<String> list2=new ArrayList<String>();//Creating arraylist
list2.add("Ravi");//Adding object in arraylist
list2.add("Vijay");
list2.add("Ravi");
list2.add("Ajay");
//Invoking arraylist object
System.out.println(list2);
if(list1.equals(list2)) {
System.out.println("yes");
}
}
}
您的数组列表不会计算为相等,因为它们具有不同顺序的不同元素。
如果您希望它们在不排序的情况下评估为真,请查看此 link
Java ArrayList - how can I tell if two lists are equal, order not mattering?
如果每个列表中的元素通过 equals 方法完全相同,包括它们在列表中的顺序,则认为两个列表相等。 所以回答你的问题,
Values are same but in different order. are these two equal?
由于顺序不同,所以不相等
will I be able to conclude that both are equivalent and perform some operation?
我不知道你为什么需要这样做,但这是可能的。 您可以使用 HashMap 将 INITIALS 存储为键并检查 PL1 的大小是否与 Map 的大小相同并且 Map 包含 PL1 中的所有值通过等于检查。
或者简单地使用 Apache Commons CollectionUtils.isEqualCollection(集合 a,集合 b)
package com.practice;
import java.util.ArrayList;
import java.util.List;
public class twoArray
{
public static void main(String[] args)
{
List<Integer> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
list1.add(00);
list1.add(01);
list1.add(02);
System.out.println(list1 +" Array list 1"); // [00,01,02] Array list 1
list2.add(01);
list2.add(02);
list2.add(00);
System.out.println(list2 +" Array list 2"); // [01,02,00] Array list 2
System.out.println(list1.equals(list2)); // output: **false**
}
}
我希望在看完这个例子后你有一个想法。 由于 ArrayList 在内部使用索引(位置)来存储值。 根据您的要求 [00,01,02] 和 [01,02,00] 值相同并且 顺序不同,因此您使用 ArrayList 它 returns 错误!它是 不等于 and 并且您将无法执行任何操作。
对此最好的解决方案是 sort PL1 和 INITIAL1 它 returns 是真的。