使用ArrayList方法subList注意

你猜 阅读:681 2021-04-01 11:14:51 评论:0

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"); 
	} 
} 

在这里插入图片描述

声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号