gpt4 book ai didi

java - 比较字符串数组的数组列表

转载 作者:行者123 更新时间:2023-11-30 08:02:43 25 4
gpt4 key购买 nike

我想比较两个字符串数组的 ArrayList。

   List<String[]> list1 = new ArrayList<String[]>;
List<String[]> list2 = new ArrayList<String[]>;

list1.equals(list2);

这将返回 false,因为 ArrayList 中的 equals 方法将对元素执行 equals 操作。

    ListIterator<E> e1 = listIterator();
ListIterator<?> e2 = ((List<?>) o).listIterator();
while (e1.hasNext() && e2.hasNext()) {
E o1 = e1.next();
Object o2 = e2.next();
if (!(o1==null ? o2==null : o1.equals(o2)))
return false;
}
return !(e1.hasNext() || e2.hasNext());

如果对数组执行 equals 操作,它将检查引用是否相等。无论如何,我们可以使用 list1.equals(list2) 而不是检查数组列表中的每个元素。

最佳答案

您不能使用 equals 来做到这一点。除了执行 equals 之外,您还可以执行 retainAll() 。您可以编写一个小函数,例如 isEqual() 并在使用 equals 的地方使用它。您需要将数组转换为列表并将其传递给此函数。

{ 
ListIterator<E> e1 = listIterator();
ListIterator<?> e2 = ((List<?>) o).listIterator();
while (e1.hasNext() && e2.hasNext()) {
E o1 = e1.next();
Object o2 = e2.next();
if (!(o1==null ? o2==null : isEqual(Arrays.alList(o1),Arrays.asList(o2))))
return false;
}
return !(e1.hasNext() || e2.hasNext());
}

boolean isEqual(List list1, List list2){

int originalSize = list1.size();
list1.retainAll(list2);
// list1 will retain all the elements that are present in list2
// if list1 has all the elements that are present in list2, present list1 size will be equal to `original size`
if(list1.size() == originlaSize){
returns true;
}else{
return false;
}

}

关于java - 比较字符串数组的数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31644416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com