ListDemo

  1 /*
  2 Collection
  3     |--List:元素是有序的,元素可以重复,因为该集合有索引
  4         |--ArrayList:底层的数据结构是数组结构。特点:查询速度很快,但增删速度慢。线程不同步
  5         |--LinkedList:底层使用的是链表结构。特点:增删速度很快,查询稍慢
  6         |--Vector:底层是数组结构。线程同步。已经被ArrayList替代了。
  7         new ArrayList()会初始化一个长度为10的空数组,元素超过10时,会自动生成增长50%的新数组,也就是15
  8         vector:初始为10,自动延长100%,也就是20
  9     |--Set:元素无序的,元素不可以重复
 10 List:
 11     特有的方法:凡是可以操作角标的方法都是该体系特有的方法
 12 增:add(index,element);
 13     addAll(index,Collection);
 14 删:remove(index);
 15 改:set(index,element);
 16 查:get(index);
 17     subList(from,to);
 18     listIterator();
 19 
 20 List集合特有的迭代器:ListIterator 是Iterator的子接口
 21 在迭代时,不能通过集合对象的方法操作集合中的元素
 22 因为会发生并发异常。
 23 所以在迭代时,只能用迭代器的方法操作元素,可是iterator方法是有限的
 24 如果想要其他的操作如添加,修改等,就需要使用其子接口。ListIterator
 25 该接口只能通过List集合的listLterator()获取
 26 */
 27 import java.util.*;
 28 class ListDemo 
 29 {
 30     public static void sop(Object obj)
 31     {
 32         System.out.println(obj);
 33     }
 34     public static void method()
 35     {
 36         ArrayList al=new ArrayList();
 37         al.add("java01");
 38         al.add("java02");
 39         al.add("java03");
 40         sop(al);
 41         //在指定位置添加元素
 42         al.add(1,"java04");
 43         sop(al);
 44         //通过角标修改元素
 45         al.set(2,"java04");
 46         sop(al);
 47         //通过角标获取元素
 48         al.get(1);
 49         al.get(2);
 50         //获取所有元素
 51         for(int i=0;i<al.size();i++)
 52         {
 53             sop(al.get(i));
 54         }
 55         /*
 56         Iterator it = al.iterator();
 57         while(it.hasNext())
 58         {
 59             sop(it.next());
 60         }
 61         */
 62         //通过indexOf()获取元素位置
 63         sop("index="+al.indexOf("java03"));
 64     }
 65     public static void main(String[] args) 
 66     {
 67          //演示列表迭代器
 68          ArrayList al = new ArrayList();
 69          al.add("java01");
 70          al.add("java02");
 71          al.add("java03");
 72          sop(al);
 73          /*
 74          Iterator it = al.iterator();
 75          while(it.hasNext())
 76          {
 77             Object obj = it.next();
 78             if(obj.equals("java02"))
 79              {
 80                 //al.add("java02");
 81                 it.remove();//将java02的引用从集合中删除了
 82              }
 83              sop(obj);
 84          }
 85          */
 86          ListIterator li = al.listIterator();
 87          while(li.hasNext())
 88          {
 89             Object obj = li.next();
 90             if(obj.equals("java02"))
 91             {
 92                 //li.add("java02");
 93                 li.set("java06"); 
 94             }
 95          }
 96          sop(al);
 97          sop("hasNext():"+li.hasNext());
 98          //判断前面有没有元素
 99          sop("hasPrevious():"+li.hasPrevious());
100         while(li.hasPrevious())
101         {
102             sop("pre:"+li.previous());
103         }
104     }
105 }

posted on 2018-01-05 20:46  HashCodeWac  阅读(112)  评论(0)    收藏  举报

导航