黑马程序员技术交流社区

标题: List下ArrayList的用法 [打印本页]

作者: 追逐    时间: 2014-3-21 17:42
标题: List下ArrayList的用法
本帖最后由 追逐 于 2014-3-21 19:26 编辑

import java.util.ArrayList;
import java.util.ListIterator;

/*
List
        特有方法、凡是可以操作角标的方法都是该体系特有的方法
1、增加
        add(index,element); 在角标为index的位置上插入element元素
        addAll(index,Collection); 在角标位置为index的位置上插入一组元素
2、删除
        remove(index); 删除角标位置为index上的元素
3、修改
        set(index,element); 修改角标位置为index上的元素
4、查找
        get(index); 查找角标位置为index上的元素
        subList(from,to); 查找角标位置从from到to但并不包含to的一组元素
        listIterator();

List集合特有的迭代器,ListIterator是Iterator的子接口。

在迭代时,不可以通过集合对象的方法操作集合中的元素。
因为会发生ConcurrentModificationException(并发修改异常)

所以,在迭代器时,只能用迭代器的方法操作元素,可是Iterator方法是有限的。
只能对元素进行判断,取出,删除的操作,
如果想要其他操作如添加。修改等,就需要使用其子接口,ListIterator;

该接口只能通过list集合的listIterator方法获取。


*/

  1. class ListDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 //list();
  6.                 list_1();
  7.         }
  8.         
  9.         //List的简答应用
  10.         public static void list()
  11.         {
  12.                 //创建一个集合容器,使用Collection的子类ArrayList
  13.                 ArrayList s = new ArrayList();
  14.                 //添加元素
  15.                 s.add("java01");
  16.                 s.add("java02");
  17.                 s.add("java03");
  18.                 p("添加前:" + s);
  19.                 //增加元素
  20.                 s.add(2,"java05"); //在角标位为2的位置插入元素
  21.                 p("添加后:" + s);
  22.                
  23.                 s.remove(3); //删除角标位为3的元素
  24.                 p("删除后:" + s);

  25.                 s.set(2, "java08"); //把角标位为2的元素修改成java08
  26.                 p("修改后:" + s);

  27.                 p("查找的单个元素是:" + s.get(2)); //查找角标位为2的数组上的元素

  28.                 p("查找到的多个元素:" + s.subList(0,3)); //以为此方法查找包含头,不包含尾。所以要查找到到所有元素。必须要比元素个数大1
  29.                

  30.         }

  31.         //ListIterator的简单应用
  32.         public static void list_1()
  33.         {
  34.                 ArrayList s = new ArrayList();
  35.                 s.add("java01");
  36.                 s.add("java02");
  37.                 s.add("java03");
  38.                 ListIterator li = s.listIterator();
  39.                 //使用List特有的迭代器ListIterator
  40.                 for(; li.hasNext(); )
  41.                 {
  42.                         Object obj = li.next(); //子类对象指向父类引用
  43.                         if(obj.equals("java03"))
  44.                         {
  45.                                 li.set("java---3"); //对迭代器中的元素进行修改
  46.                                 li.add("java-----3"); //对迭代器中的元素进行添加
  47.                         }
  48.                 }
  49.                 p("从头往后遍历:" + s);

  50.                 for(; li.hasPrevious(); )
  51.                 {
  52.                         p(li.previous()); //从后往前遍历
  53.                 }
  54.                
  55.         }

  56.         public static void p(Object obj)
  57.         {
  58.                 System.out.println(obj);
  59.         }
  60. }
复制代码



作者: 滔哥    时间: 2014-3-21 17:43
刷帖,也要刷好点啊,这样复制,代码不放代码区域
作者: 追逐    时间: 2014-3-21 19:02
额,没弄过啊。怎么弄啊????????
作者: Asura    时间: 2014-5-5 17:11
顶一下…………
作者: gma103    时间: 2014-5-5 17:21
看一下...




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2