Java 中 Collections 的 indexOfSubList() 方法及示例
java.util.Collections 类中的 indexOfSubList() 方法用于返回指定源列表中指定目标列表的第一个匹配项的起始位置,如果没有匹配项则返回-1。更正式地说,返回最低索引 i,使得source.subList(i, i+target.size()).equals(target),如果没有这样的索引则返回-1。(如果target.size() > source.size(),则返回-1。)
此实现使用“暴力”技术扫描源列表,在每个位置依次查找与目标的匹配项。
语法:
public static int indexOfSubList(List source, List target)
参数: 此方法的参数为以下内容
- source – 要搜索第一次出现的目标元素的列表。
- target – 要作为source子列表搜索的列表。
返回值: 这个方法返回指定源列表中指定目标列表的第一次出现的开始位置,如果没有这样的出现,就返回-1。
以下是演示indexOfSubList()方法的示例。
示例1:
// Java程序演示
// indexOfSubList()方法
// 内容为String类型的例子
import java.util.*;
public class GFG1 {
public static void main(String[] argv) throws Exception {
try {
// 创建List<String>对象
List<String> arrlistsrc = new ArrayList<String>();
List<String> arrlisttarget = new ArrayList<String>();
// 将元素添加到arrlistsrc
arrlistsrc.add("A");
arrlistsrc.add("B");
arrlistsrc.add("C");
arrlistsrc.add("D");
arrlistsrc.add("E");
// 将元素添加到arrlisttarget
arrlisttarget.add("C");
arrlisttarget.add("D");
arrlisttarget.add("E");
// 打印源列表
System.out.println("源列表: " + arrlistsrc);
// 打印目标列表
System.out.println("目标列表: " + arrlisttarget);
// 在源列表中检查目标列表
int index = Collections.indexOfSubList(arrlistsrc,arrlisttarget);
// 打印索引
System.out.println("目标列表起始位置: " + index);
}
catch (IllegalArgumentException e) {
System.out.println("异常: " + e);
}
}
}
输出:
源列表: [A, B, C, D, E]
目标列表: [C, D, E]
目标列表起始位置: 2
示例2:
// Java程序演示
// indexOfSubList()方法
// 内容为Integer类型的例子
import java.util.*;
public class GFG1 {
public static void main(String[] argv) throws Exception {
try {
// 创建List<Integer>对象
List<Integer> arrlistsrc = new ArrayList<Integer>();
List<Integer> arrlisttarget = new ArrayList<Integer>();
// 将元素添加到arrlistsrc
arrlistsrc.add(20);
arrlistsrc.add(30);
arrlistsrc.add(40);
arrlistsrc.add(50);
arrlistsrc.add(60);
// 将元素添加到arrlisttarget
arrlisttarget.add(40);
arrlisttarget.add(50);
// 打印源列表
System.out.println("源列表: " + arrlistsrc);
// 打印目标列表
System.out.println("目标列表: " + arrlisttarget);
// 在源列表中检查目标列表
int index = Collections.indexOfSubList(arrlistsrc,arrlisttarget);
// 打印索引
System.out.println("目标列表起始位置: " + index);
}
catch (IllegalArgumentException e) {
System.out.println("异常: " + e);
}
}
}
输出:
源列表: [20, 30, 40, 50, 60]
目标列表: [40, 50]
目标列表起始位置: 2