/*集合类 存储对象数组是固定长度,集合石可变长度。数组必须相同类型,集合只要是对象就可以。集合框架 每一个容器对数据的存储结构不同(数据结构)CollectionList ArrayList LinkedList Vector Set HashSet TreeSet*/import java.util.*;class demo{ public static void main(String[] args) { ArrayList al = new ArrayList(); //集合中存储的都是对象的引用(地址) //增 al.add("01");//字符串是对象 add(object obj) 可接受任意类型对象。 al.add("02"); al.add("03"); al.add("04"); //查 al.size(); //集合长度 al.contains("04"); //是否存在04 al.isEmpty();//是否为空 System.out.println(al); //打印 //删 al.remove("03"); al.clear(); //清空 al.retainAll(al2); //取交集,al会保存与al2的交集。 }}
/*List 元素是有序的,元素可以重复,该集合体系有索引。 凡是可以操作角标的方法都是该体系特有的方法。 增 add(index,element); addAll(index,Collection); 删 remove(index); 改 set(index,element); 查 get(index); subList(from,to); listIterator();Set 元素是无序的,元素不可以重复,该集合体系没有索引。*/class demo{ public static void main(String[] args) { ArrayList al = new ArrayList(); //增 al.add("01"); al.add("02"); al.add("03"); //指定位置 增加 al.add(1,"java"); //指定位置 删除 al.remove(2); //修改元素 al.set(2,"ccc"); //获取元素 al.get(1); //获取所有元素 遍历 for (int x=0;x
错误示例:
//在迭代过程中,准备添加或者删除元素 Iterator it = al.iterator(); while(it.hasNext()) //有元素就返回 true { object obj = it.next(); if(obj.equals("02")) //错误 并发同时访问 有安全隐患 { al.add() } }
常用代码:
/*List集合特有的迭代器,ListIterator是Iterator的子接口。在迭代时,不可以通过集合的对象操作集合中的元素,因为会发生异常。Iterator 只能对 元素 进行 判断 取出 删除。ListIterator功能更多。*/ ListIterator li = al.ListIterator(); while(li.hasNext()) { object obj = li.next(); if(obj.equals("02")) { li.add("09");//在02后面添加09 li.set("100");//把02修改成100 } }
ArrayList 底层的数据结构使用的是数组结构。查询速度快,但是增删稍慢。
线程不同步 可变长度数组LinkedList 链表数据结构 查询速度慢,但是增删快。
Vector 底层是数组数据结构 线程同步。增删查都慢。(被ArrayList取代)
/*LinkedList 特有方法:addFirst 在前面插入addLast 在后面插入getFirst(); 获取最前面的getLast(); 获取最后面的如果集合中没有元素,会出现nosuchElementExcptionsize(); 获取元素个数removeFirst 移除第一个元素,并输出被删的元素removeLast 移除最后一个元素,并输出被删的元素如果集合中没有元素,会出现nosuchElementExcption------------------------------------------------------------------------------在JDK1.6出现了替代方法,如果集合中没有元素,会出现nullofferFirst()offerLast();peekFirst();peekLast();pollFirst();pollFirst();*/import java.util.*;class LinkedListDemo{ public static void main(String[] args) { LinkedList link = new LinkedList(); link.add("苹果"); link.add("梨子"); link.add("桃子"); while(!link.isEmpty()) { link.removeFirst(); } }}
Person p = (Person)it.next(); //obj p.getName() p.getAge()