如何检查列表是否包含Java中给定顺序的子列表

ana*_*mar 4 java collections list

我在groovy中读到 如何检查列表是否包含子列表 - stackoverflow.

我感兴趣的是,有一种方法可以检查列表是否包含子列表,但是按给定的顺序.例如,这段代码将给出真实的,

    List<String> list = Arrays.asList("PRP", "VBP", "VBN", "NN", "NNS", "MD", "VB");
    List<String> sublist = Arrays.asList("MD", "VB", "VBN");
    System.out.println(list.containsAll(sublist));
Run Code Online (Sandbox Code Playgroud)

但是,我想回来.

Jor*_*lla 20

你可以使用方法Collections.indexOfSubList.

返回指定源列表中第一次出现的指定目标列表的起始位置,或者-1如果没有这样的出现.更正式地,返回最低索引i source.subList(i, i+target.size()).equals(target),或者-1如果没有这样的索引.(-1如果target.size()>,则返回source.size().)

int index=Collections.indexOfSubList(list , sublist);
Run Code Online (Sandbox Code Playgroud)

简短:
如果Collections.indexOfSubList(list , sublist) =! -1你有匹配