集合框架--List相关
2015-12-01 09:15
204 查看
/* Collection: |--List:元素是有序的,元素可以重复。因为该集合体系有索引。 |--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度快,增删稍慢。----一般使用而不用Vector |--LinkedList:底层使用的是链表数据结构。特点:增删速度快,查询稍慢。 |--Vector:底层是数组数据结构。线程同步。 |--Set:元素是无序的,元素不可以重复。 List: 特有方法。凡是可以操作角标的方法都是该体系特有的方法。 增: add(index,element); addAll(index,Collection); 删: remove(index); 改: set(index,element); 查: get(index); subList(from,to);----取子list listIterator();----列表迭代器 List集合特有的迭代器。ListIterator是Iterator的子接口。 在迭代时,不可以通过集合对象的方法操作集合中的元素。 因为会发生生ConcurrentModificationException异常。 所以,在迭代器时,只能用迭代器的方法操作元素,可是Iterator方法是有限的。 如果想要其它的操作如添加,修改等,就需要使用其子接口,ListIterator。 该接口只能通过List集合的listIterator方法获取。 */ import java.util.*; class CollectionDemo{ public static void main(String[] args) { method(); //演示列表迭代器 ArrayList al = new ArrayList(); //添加元素 al.add("java01"); al.add("java02"); al.add("java03"); al.add("java04"); /* //在迭代过程中,准备添加或者删除元素 Iterator it = al.iterator();//只能删除,不能添加,有局限性 while(it.hasNext()) { Object obj = it.next(); if(obj.equals("java02")) //al.add("java008");----发生异常 it.remove();//将java02的引用从集合中删除 show(obj); } show(al); */ ListIterator li = al.listIterator(); while(li.hasNext()){ Object obj = it.next(); if(obj.equals("java02")) //al.add("java008"); li.set("java006"); show(obj); } show(li.hasNext());//判断是否有后一元素--false show(li.hasPrevious());//判断是否有前一元素--true while(li.hasPrevious()){ show(li.previous()); } show(al); } public static void method(){ ArrayList al = new ArrayList(); //添加元素 al.add("java01"); al.add("java02"); al.add("java03"); al.add("java04"); show(al);//--java01,java02,java03,java04 //在指定位置添加元素 a1.add(1,"java09"); show(al);//--java01,java09,java02,java03,java04 //删除指定位置的元素 ad.remove(2); show(al);//--java01,java09,java03,java04 //修改元素 al.set(2,"java007"); show(al);//--java01,java09,java007,java04 //通过角标获取元素 al.get(1); show(al);//--java09 //获取所有元素--for循环或者Iterator for(int i=0; i<al.size(); i++) show(al.get(i)); Iterator it = al.iterator(); while(it.hasNext()) show(it.next());//--java01,java09,java007,java04 //通过indexOf获取对象的位置 show(al.indexOf("java09"));//1 List sub = al.subList(1,3);//java09,java007 } public static void show(Object obj){ System.out.println(obj); } } /*----------------------------------------------------------------------------------*/ import java.util.*; /* LinkedList特有方法: addFirst(); addLast(); getFirst(); getLast();---获取元素但不删除 removeFirst(); removeLast();---获取元素并删除。如果集合中没有元素,会出现NoSuchElementException 在JDK1.6出现了替代方法。 offerFirst(); offerLast(); peekFirst(); peekLast(); pollFirst(); pollLast();---如果集合中没有元素,返回null */ class LinkedListDemo{ public static void main(String[] args) { LinkedList link = new LinkedList(); link.addFirst("java01"); link.addFirst("java02"); link.addFirst("java03"); link.addFirst("java04"); show(link);//--java04,java03,java02,java01 show(link.getFirst());//--java04 show(link.getLast());//--java01 show(link.removeFirst());//--java04,并且被删除 while(!link.isEmpty()){ show(link.revomeFirst());//--取出所有元素并删除 } } public static void show(Object obj){ System.out.println(obj); } } /*----------------------------------------------------------------------------------*/ import java.util.*; /*枚举就是Vector特有的取出方式。 发现枚举和迭代器很像。 其实枚举和迭代是一样的。 因为枚举的名称以及方法的名称都过长。 所以被迭代器取代了。 枚举郁郁而终了。 */ class VectorDemo{ public static void main(String[] args) { Vector v = new Vector(); v.add("java01"); v.add("java02"); v.add("java03"); v.add("java04"); Enumeration en = v.elements(); while(en.hasMoreElements()) { System.out.println(en.nextElement()); } } }
相关文章推荐
- 键盘变搜索按钮
- Python Core Programing Chapter 0_4 Test
- oracle多表关联删除数据表记录方法
- java的数学函数总结
- android中volatile和synchronized的应用
- svn邮件通知
- 为什么全球最好的大学大半在美国?看看美国的孩子是怎么念书的
- Java中密码加密之PBE算法
- android recovery镜像解包和打包
- 【转】如何实现一个文件系统
- Server.MapPath()
- my97DatePicker选择年、季度、月、周、日
- ORACLE多表关联UPDATE 语句
- java字符串函数及理解
- java常用日期函数总结
- 集合框架共性方法
- Bitmap与Drawable之间的转换
- iOS 控制器的创建以及管理
- CSS遮罩层的实现
- java数组