ArrayListDemo
2016-07-10 20:12
417 查看
/* Collection |--List:元素是有序,元素可以重复,因为有索引 |--ArrayList:底层的数据结构使用的数组结构。特点:查询速度很快,但是增删稍慢。线程不同步 |--LinkedList:底层使用的是链表数据结构。特点:增删速度很快,查询稍慢。 |--Vector:底层是数组数据结构。 线程同步。被ArrayList替代了。 |--Set:元素是无序,元素不可以重复 List 特有方法。凡是可以操作角标的方法都是该体系特有的方法。 增 add(index,element); addAll(index,Collection); 删 remove(index); 改 set(index,element); 查 get(index); subList(from,to); listIterator(); List集合特有的迭代器,ListIterator是Iterator的子接口。 在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生并发修改异常(ConcurrentModificationException) 所以,在迭代时,只能用迭代器的方法操作元素,可是Iterator方法是有限的, 只能对元素进行判断,去除,删除的操作。 如果想要其他的操作如添加,修改等,就需要使用其子接口ListIterator. 该接口只能通过List集合的listIterator方法获取 可在遍历过程中进行增删改查 */ import java.util.*; class ListDemo { public static void sop(Object obj) { System.out.println(obj); } public static void method() { ArrayList al = new ArrayList(); //添加元素 al.add("java01"); al.add("java02"); al.add("java03"); sop("原集合是"+al); ListIterator li = al.listIterator(); while(li.hasNext()) { Object obj = li.next(); if(obj.equals("java02")) li.add("java009"); } sop(al); //在制定位置添加元素 al.add(1,"java09"); //删除制定位置的元素。 //al.remove(2); //修改元素 //al.set(2,"java007"); //通过角标获取元素。 sop("get(1):"+al.get(1)); sop(al); //获取所有元素。 for(int x=0;x<al.size();x++)//集合size()区别于数组的length() { System.out.println("al("+x+")="+al.get(x));//用for循环遍历获取并输出 } Iterator it = al.iterator(); while(it.hasNext()) { sop("nex:"+it.next()); } //通过indexOf获取对象的位置。 sop("index="+al.indexOf("java02")); List sub = al.subList(1,3); sop("sub="+sub); System.out.println("Hello World!"); } public static void main(String[] args) { //演示列表迭代器 ArrayList al = new ArrayList(); //添加元素 al.add("java01"); al.add("java02"); al.add("java03"); sop("原集合是"+al); ListIterator li = al.listIterator(); //sop("hasPreviouse():"+li.hasPrevious());//判断是否有前一个元素 while(li.hasNext())//正向遍历 { Object obj = li.next(); if(obj.equals("java02")) //li.add("java009"); li.set("java006"); } //sop("hasNext():"+li.hasNext());//判断是否有后一个元素 //sop("hasPreviouse():"+li.hasPrevious());//判断是否有前一个元素 while(li.hasPrevious())//逆向遍历 { sop("pre:"+li.previous()); } sop("集合是"+al); /* //在迭代过程中,准备添加或者删除元素。 Iterator it = al.iterator(); while(it.hasNext()) { Object obj = it.next();//把next()传给obj if(obj.equals("java02")) //al.add("java008"); it.remove();//将java02的引用从集合中删除了 sop("obj="+obj); } sop(al); */ } }
相关文章推荐
- ruby 数组使用教程
- Ruby中的数组和散列表的使用详解
- C#数据结构之顺序表(SeqList)实例详解
- C#实现AddRange为数组添加多个元素的方法
- C#比较二个数组并找出相同或不同元素的方法
- C#.Net ArrayList的使用方法
- C#动态调整数组大小的方法
- 详解Lua中的数组概念知识
- Lua教程(七):数据结构详解
- Perl中的列表和数组学习笔记
- 探索PowerShell (八) 数组、哈希表(附:复制粘贴技巧)
- C#中数组初始化与数组元素复制的方法
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#交错数组用法实例
- Linux Shell 数组建立及使用技巧
- PowerShell数组的一些操作技巧
- C#通过yield实现数组全排列的方法
- C#不重复输出一个数组中所有元素的方法
- C#实现将数组内元素打乱顺序的方法
- C#数据结构之队列(Quene)实例详解