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",在輸出原列表時,對應的元素也被修改了。