Java 如何检查子列表是否位于某个“位置”;“窗口”;有更大的名单吗?

Java 如何检查子列表是否位于某个“位置”;“窗口”;有更大的名单吗?,java,sorting,arraylist,Java,Sorting,Arraylist,给定一个arraylist和两个开始和结束索引,如何检查“窗口”中是否存在某个子arraylist,即索引之间的子arraylist i、 e private ArrayList list=new ArrayList; 私有整数开始=2,结束=6; 私有ArrayList子列表=新建ArrayList; 布尔值present=isPresent(); 如何有效地实现这个isPresent()方法?我将在内部使用此方法 一种运行时编码算法,用于压缩文本文件(我需要先将其读入ArrayList)。

给定一个arraylist和两个开始和结束索引,如何检查“窗口”中是否存在某个子arraylist,即索引之间的子arraylist

i、 e

private ArrayList list=new ArrayList;
私有整数开始=2,结束=6;
私有ArrayList子列表=新建ArrayList;
布尔值present=isPresent();
如何有效地实现这个isPresent()方法?我将在内部使用此方法
一种运行时编码算法,用于压缩文本文件(我需要先将其读入ArrayList)。

我希望这就是您需要的

boolean iPresent(List l1, int start, int end, List l2) {
    for (int i = start; i < end; i++) {
        if (l2.size() > end - i) {
            break;
        }
        if (l1.get(i).equals(l2.get(0))) {
            return l1.subList(i, i + l2.size()).equals(l2);
        }
    }
    return false;
}
boolean-iPresent(列表l1、int-start、int-end、列表l2){
for(int i=start;iend-i){
打破
}
如果(l1.get(i).等于(l2.get(0))){
返回l1.subList(i,i+l2.size()).equals(l2);
}
}
返回false;
}

请注意,subList()返回一个由其父列表支持的列表,并且不创建新数组,无需担心性能。

isPresent是否应该有开始和结束参数?在我的类中,这些都是实例变量。。。我将在我的问题中改变这一点。谢谢列表2在列表1中的某个地方,它们不一定是相同的长度,很遗憾。。。
return Collections.indexOfSubList(list.subList(start, end), subList) != -1;
return Collections.indexOfSubList(list.subList(start, end), subList) != -1;