我有两个arraylist,每个都有3个元素。 PL1
和INITIAL1
属于数组列表。 INITIAL1
将使用值初始化,PL1
将被动态编辑。如果两者相等,则将执行任何操作,否则将不执行任何操作。
PL1 = [00, 01, 02]
INITIAL1 = [01, 02, 00]
值相同,但顺序不同。 这两个相等吗?
我能否断定两者是等效的并执行某些操作?
答案 0 :(得分:1)
如果每个列表中的元素通过equals方法完全相同(包括它们在列表中的顺序),则认为两个列表相等。 因此,回答您的问题,
值相同,但顺序不同。这两个相等吗?
由于它们的顺序不同,所以它们不相等。
我能否断定两者是等效的并执行某些操作?
我不知道您为什么需要这样做,但是有可能。 您可以使用HashMap将INITIALS作为密钥存储,并通过等号检查来检查PL1的大小是否与Map的大小相同,并且Map包含PL1中的所有值。
或者只需使用Apache Commons CollectionUtils.isEqualCollection(Collection a,Collection b)
答案 1 :(得分:0)
if (INITIAL1.size() == PL1.size() && INITIAL1.containsAll(PL1)) {
//do something
}
答案 2 :(得分:0)
当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");
}
}
}
您的数组列表的值将不相等,因为它们具有不同顺序的不同元素。
,如果您希望它们的计算结果为true而不进行排序,请查看此链接
Java ArrayList - how can I tell if two lists are equal, order not mattering?
答案 3 :(得分:0)
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时返回false!这是 不相等,您将无法执行任何操作。
为此的最佳解决方案是您只需对PL1和INITIAL1进行排序 并返回true。