我如何比较两个不同大小的数组列表并检查元素的顺序?
1.首先检查ArrayList1是list2的子集
2.第二次检查ArrayList2与List1的顺序相同,忽略随机元素
Arraylist1{"this", "is", "a", "coding", "test"};
Arraylist2{"this", "is", "random1", "a", "random2", "coding", "random3", "test"};
如果 List2 是这样的顺序,测试将通过:
"this" "is" "a" "coding" "test"
如果列表 2 有任何其他顺序,则测试将失败:
“a”、“is”、“coding”、“test”、“this”
,或者缺少这 5 个词中的任何一个。
程序应该忽略列表 2 中任意数量的随机值(如 random1、random2 和 random3)。
我怎样才能实现这种情况?
我尝试了 for
循环和迭代器。它没有用,他们给了我两个 ArrayList 的共同元素,但没有给我“顺序”。我还能做什么?
for
循环使用:list1.contains(list2.get(i)))
但这只是比较值,并不检查顺序。
带有
while
循环的迭代器:Iterator<String> List1_Iterator = List1.iterator(); while (List1_Iterator.hasNext()) { }
这也不检查元素的顺序。
最佳答案
您也可以按照您的步骤执行此简单过程。 1)比较元素。 2) 比较顺序。
import java.util.*;
class Stack1
{
public static void main(String args[])
{
ArrayList<String> list=new ArrayList<String>();
list.add("First");
list.add("name");
list.add("is");
list.add("Jay");
ArrayList<String> list2=new ArrayList<String>();
list2.add("First");
list2.add("name");
list2.add("is");
list2.add("Sudeep");
ArrayList<String> list3=new ArrayList<String>();
for(int i=0;i<list2.size();i++)
{
for(int j=0;j<list.size();j++)
{
if(list2.contains(list.get(j))==true)
{
if(list2.get(i)==list.get(j))
{
list3.add(list2.get(i));
}
}
else{ break; }
}
}
if(list.equals(list3))
{
System.out.println("true");
}
else{System.out.println("false");}
}
}
关于java - 如何比较两个不同大小的数组列表并检查元素的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54280415/