1.subList方法返回的只是原list的视图不是新建List,所有操作sublist返回的List时要注意不要修改原List
public class ListTest {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
List<String> subList = list.subList(2, 4);
subList.remove("c");
System.out.println(list);
System.out.println(subList);
}
}
2.这样既可
public class ListTest {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
List<String> subList = list.subList(2, 4);
//创建新的list
List<String> list2 = new ArrayList<>(subList);
boolean remove = list2.remove("c");
System.out.println(list);
System.out.println(list2);
}
}
3.大量调用sublist
public class ListTest {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("");
for (int i = 0; i < 50000; i++) {
list = list.subList(0, 1);
}
System.out.println(list.size());
list.add("test");
}
}
4.改正
public class ListTest {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("");
for (int i = 0; i < 50000; i++) {
list = new ArrayList<>(list.subList(0, 1));
}
System.out.println(list.size());
list.add("test");
}
}