如何检查列表是否是另一个列表的子集

Zaq*_*Zaq 3 java linked-list subset

list1:[1,2,3,4,5]
list2:[1,2,3]
Run Code Online (Sandbox Code Playgroud)

如何检查list2是否是list1的子集?我尝试了containsAll(),但只要列表2中的元素存在于list1中,它就会成立.我想要与标准相同的顺序而不仅仅是元素.

Las*_*rdi 10

用这个:

boolean contains(List<?> list, List<?> sublist) {
    return Collections.indexOfSubList(list, sublist) != -1;
}
Run Code Online (Sandbox Code Playgroud)

http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#indexOfSubList(java.util.List,%20java.util.List)


M S*_*ach 1

这是算法

1)迭代第二个列表

2)检查第一个列表中是否包含元素

如果没有返回 false

如果是,则使用indexOf()从第一个列表中获取该元素的索引

3)现在在迭代时检查下一个元素是否等于list1(lastMatchedIndexFromList1++)

如果返回 false

如果是,则重复步骤 3,并在迭代结束时返回 true