使用ArrayList方法subList注意

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

在这里插入图片描述

发布了47 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_37460672/article/details/103711038
今日推荐