Java中的List接口提供了subList()方法用于获取列表中指定范围的子列表,该方法的语法格式如下:
List<E> subList(int fromIndex, int toIndex)
其中,fromIndex表示获取子列表的起始索引,包含该索引处的元素;toIndex表示获取子列表的结束索引,不包含该索引处的元素。如果fromIndex等于toIndex,则返回一个空列表。如果指定的索引超出了列表的范围,会抛出IndexOutOfBoundsException异常。
示例代码如下:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("C++");
list.add("PHP");
list.add("Ruby");
// 获取子列表,包含第2和第3个元素(注意:这里的索引是从0开始计数的)
List<String> sublist = list.subList(1, 3);
System.out.println(sublist); // 输出 [Python, C++]
}
}
该代码创建了一个包含字符串类型元素的List,并使用subList()方法获取其中的子列表。从索引值1开始,取两个元素,即包括第2和第3个元素,输出结果为[Python, C++]。
需要注意的是,获取的子列表与原列表共享元素,即对子列表的修改也会反映到原列表中。例如,可以使用子列表的set()方法修改其中的元素,对应原列表中的元素也会被修改,示例代码如下:
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("C++");
list.add("PHP");
list.add("Ruby");
// 获取子列表,包含第2和第3个元素
List<String> sublist = list.subList(1, 3);
// 修改子列表中的第一个元素
sublist.set(0, "JavaScript");
System.out.println(list); // 输出 [Java, JavaScript, C++, PHP, Ruby]
}
}
在该示例代码中,子列表中的第一个元素被修改为"JavaScript",在输出原列表时,对应的元素也被修改了。