- 简单示例
package com.mcq; import java.util.ArrayList; import java.util.Collection; public class CollectionDemo { public static void main(String[] args) { Collection collection=new ArrayList(); collection.add(100); collection.add("hello world"); collection.add(10.10); collection.add(true); collection.add(new Student("小明",19)); Object[] objArr=collection.toArray(); for(int i=0;i<objArr.length;i++){ if(i==objArr.length-1){ Student s=(Student)objArr[i]; System.out.println(s.getName()+" "+s.getAge()); } System.out.println(objArr[i]); } } } /* 100 hello world 10.1 true 小明 19 com.mcq.Student@7d67d940 */
package com.mcq; import java.util.Collection; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import com.sun.org.apache.bcel.internal.generic.NEW; public class CollectionDemo2 { public static void main(String[] args) { Collection c = new ArrayList(); c.add(new Student("小明", 19)); c.add(new Student("小丽", 18)); System.out.println(c.size()); Iterator iterator = c.iterator(); Student student = (Student) iterator.next();// iterator初始相当于头结点,无值。 System.out.println(student.getName() + " " + student.getAge()); while (iterator.hasNext()) { Object next = iterator.next(); Student s = (Student) next; System.out.println(s.getName() + " " + s.getAge()); } System.out.println(); List list = (List) c;// List继承自Collection for (int i = 0; i < c.size(); i++) { Object object = list.get(i); Student s = (Student) object; System.out.println(s.getName() + " " + s.getAge()); } System.out.println(); Iterator iterator2 = list.iterator(); while (iterator2.hasNext()) { Object next = iterator2.next(); Student student2 = (Student) next; System.out.println(student2.getName() + " " + student2.getAge()); } System.out.println(); for (int i = 0; i < list.size(); i++) { Student s=(Student)list.get(i); if(s.getName().equals("小明")){ s.setName("小猪"); } } iterator = list.iterator(); while (iterator.hasNext()) { Object next = iterator.next(); Student s = (Student) next; System.out.println(s.getName() + " " + s.getAge()); } System.out.println(); list.set(0, new Student("小花", 20));//用指定的对象替换下表对应的对象。 iterator = list.iterator(); while (iterator.hasNext()) { Object next = iterator.next(); Student s = (Student) next; System.out.println(s.getName() + " " + s.getAge()); } } } /* 2 小明 19 小丽 18 小明 19 小丽 18 小明 19 小丽 18 小猪 19 小丽 18 小花 20 小丽 18 */
Collection和List都是接口,ArrayList类实现这些接口,集合遍历的时候,使用iterator迭代器,用add()方法添加元素会出现并发修改异常。
-
ArrayList用法类似。
-
LinkedList用法:
package com.mcq; import java.util.Iterator; import java.util.LinkedList; import com.sun.org.apache.bcel.internal.generic.NEW; public class LinkedListDemo { public static void main(String[] args) { LinkedList list=new LinkedList(); list.add("小花"); list.add("小明"); Iterator iterator=list.iterator(); while(iterator.hasNext()){ String s=(String)iterator.next(); System.out.println(s); } System.out.println("--------------"); list.addFirst("小强");//添加到表头 iterator=list.iterator(); while(iterator.hasNext()){ String s=(String)iterator.next(); System.out.println(s); } System.out.println("---------------"); System.out.println(list.getFirst());//获得首元素 System.out.println("---------------"); System.out.println(list.pop());//删除首元素 System.out.println("---------------"); iterator=list.iterator(); while(iterator.hasNext()){ String s=(String)iterator.next(); System.out.println(s); } } } /* 小花 小明 -------------- 小强 小花 小明 --------------- 小强 --------------- 小强 --------------- 小花 小明 */
线程不安全(线程不同步):如果出现并发需求,需要你去手动进行线程安全操作。也就是说如果多个用户同时访问一个对象的时候,一边修改了另一边可能就会出现错误。但效率高。
-
ArrayList和LinkedList相同点:(1)都是线程不安全的。(2)实现了接口。
-
不同点:(1)前者是数组实现,后者是链表实现。(2)前者适合查询;后者适合修改。
java学习笔记之Collection、List、ArrayList、LinkedList
最新推荐文章于 2024-11-06 21:24:48 发布