List.addAll()操作总结
来源:互联网 发布:unity3d小球滚动 编辑:程序博客网 时间:2024/05/29 02:45
List引用一
- List<Person> persons = PersonService.getPersonsByAgeIn(18,23);//初始化一个Person的List。
- List<Person> backPersons = persons;
显然,对backPersons的操作会直接改变persons的数据。
backPersons只是定义了一个数据引用,并没有初始化申请空间。现在的backPersons就是persons。
那么,换以下方式呢?
public class TestListYinyong { public static void main(String[] args) { Person person=new Person("1111"); Person person1=new Person("2222"); Person person2=new Person("3333"); List<Person> personList=new ArrayList<>(); personList.add(person); personList.add(person1); personList.add(person2); for (Person person0:personList){ System.out.println("最开始的personList "+person0.getName()); } //改变person的值是会影响原来的personList的(会改变personList的值) System.out.println();System.out.println();System.out.println(); List<Person> personList2=new ArrayList<>(); personList2=personList; personList2.get(0).setName("111111111111"); for (Person person0:personList){ System.out.println("改变personList2中的person的值后的personList "+person0.getName()); }}
输出结果:
最开始的personList 1111最开始的personList 2222最开始的personList 3333改变personList2中的person的值后的personList 111111111111改变personList2中的person的值后的personList 2222改变personList2中的person的值后的personList 3333
所以结果就是:如图两个list同时引用同一个list对象。
List引用二:list.addAll()
- List<Person> persons = PersonService.getPersonsByAgeIn(18,23);//初始化一个Person的List。
- List<Person> backPersons = new ArrayList<Person>();
- backPersons.addAll(persons);
这样给backPerson赋值之后再操作内部数据,此处分两种情况,如果对backPersons的操作是在List层的操作,对persons没有影响。也就是说,如果backPersons只是对内部数据做了简单的删除、排序或者添加等操作。但是,如果操作深入到List内部数据层,那么backPersons数据修改就会影响到persons的数据。原因很简单,backPersons中的每一个Person都是persons一样的Person。那么,操作对象的时候就会有影响。
总结:对对象操作对原来的list会有影响,list层的操作对原来的list不会有影响。
public class TestListYinyong { public static void main(String[] args) { Person person=new Person("1111"); Person person1=new Person("2222"); Person person2=new Person("3333"); List<Person> personList=new ArrayList<>(); personList.add(person); personList.add(person1); personList.add(person2); for (Person person0:personList){ System.out.println("最开始的personList "+person0.getName()); } //改变person的值是会影响原来的personList的(会改变personList的值) System.out.println();System.out.println();System.out.println(); List<Person> personList2=new ArrayList<>(); personList2.addAll(personList); personList2.get(0).setName("111111111111"); for (Person person0:personList){ System.out.println("改变personList2中的person的值后的personList "+person0.getName()); } //对personList2增加数据,看一下对personList的影响(对personList没影响) System.out.println();System.out.println();System.out.println(); personList2.add(new Person("4444")); for (Person person0:personList){ System.out.println("对personList2增加数据后的personList "+person0.getName()); } //对personList2删除数据,看一下对personList的影响(对personList没影响) System.out.println();System.out.println();System.out.println(); personList2.remove(0); System.out.println(); for (Person person0:personList){ System.out.println("对personList2删除数据后的personList "+person0.getName()); } //清空personList2数据,看一下对personList的影响(对personList没影响) System.out.println();System.out.println();System.out.println(); personList2.clear(); System.out.println(); for (Person person0:personList){ System.out.println("清空personList2数据后的personList "+person0.getName()); } }}
输出结果:
最开始的personList 1111
最开始的personList 2222
最开始的personList 3333
改变personList2中的person的值后的personList 111111111111
改变personList2中的person的值后的personList 2222
改变personList2中的person的值后的personList 3333
对personList2增加数据后的personList 111111111111
对personList2增加数据后的personList 2222
对personList2增加数据后的personList 3333
对personList2删除数据后的personList 111111111111
对personList2删除数据后的personList 2222
对personList2删除数据后的personList 3333
清空personList2数据后的personList 111111111111
清空personList2数据后的personList 2222
清空personList2数据后的personList 3333
List.addAll()三
addAll是传入一个List,将此List中的所有元素加入到当前List中,也就是当前List会增加的元素个数为传入的List的大小
即addAll(Collection c)
add(int index,Elelemt e)
--------------------------------------
addAll(Collection c)
此方法按照指定 collection 的迭代器所返回的元素顺序,将该 collection 中的所有元素添加到此列表的尾部。
C
包含要添加到此列表中的元素的 collection
return
如果此列表由于调用而发生更改,则返回 true
Throws
NullPointerException: 如果指定的 collection 为 null
0 0
- List.addAll()操作总结
- List遍历方式、add()、addAll()使用方法总结
- list中的addall方法
- list.add addAll
- list中的addall方法
- java list add addall
- List.addAll(null);
- 关于list的addAll方法
- List的【addAll(List list)】方法
- 简析list.add() 和list.addAll()
- java list大数据量用addAll
- list 的add addall
- List 的add()与addAll()的区别
- Java学习笔记-List中的addAll 方法
- List 的add()与addAll()的区别
- list的addAll出现空指针问题
- list的addAll方法是浅拷贝
- list.addAll()是浅拷贝,如…
- Java基础学习(五)
- 容斥原理 && 欧拉函数 && 抽屉原理
- [codeforces117E]Tree or not Tree
- 搭建一个spring-boot项目 4
- hduoj-2824【欧拉函数】
- List.addAll()操作总结
- CodeForces
- [jzoj4665][CF407E]k-d-sequence
- 个人对this总结
- bzoj1634
- 云计算与数据中心
- Java Groovy集成
- 服务端主动终止连接的情况分析
- Linux find指令