容器框架(JCF)-列表(List)

列表特性:

  • 有序的Collection
  • 元素可以重复

主要实现

  • ArrayList(不支持同步)
  • LinkedList(不支持同步)
  • Vector(同步)
 

            实现

 

           优点

 

           缺点

       适用范围

 

          特点
                     ArrayList                   LinkedList                      Vector

以可变数组实现的列表,不支持同步

以双向链表实现的列表,不支持同步以可变数组实现的列表,支持同步,适合多线程下使用
利用索引位置可以快速定位访问顺序访问高效,中间插入和删除高效支持多线程

指定位置插入、删除效率低

随机索引访问效率低非同步下优先采用ArrayList
适合变动不大、主要用于查询的数据适用于经常要变化的数据适用于多线程
容器填满时自动扩充50%容器大小随增删及时变化 

 

 

 

 

 

 

 

 

ArrayList

   1.创建

ArrayList<Integer> arraylist=new ArrayList<>();

   2.基本操作

       (1)add添加

        arraylist.add(1);
        arraylist.add(2);//添加到末尾
        arraylist.add(new Integer(5));
        arraylist.add(9);//自动装箱,将int 类型9装箱为Integer
        arraylist.add(1,3);//在索引位置为1的地方添加3,即添加元素为第二个元素

    (2)remove删除

       arraylist.remove(2);//删除索引位置为2元素,即删除第三个元素

    (3)clear清空

    (4)复制

                  “=”进行复制,实际是两个变量指向同一对象,arraylist2进行删除或添加,arraylist也会发生相同变化,即两个指针操作同一对象

        ArrayList<Integer> arraylist2=new ArrayList<>();
        arraylist2=arraylist;
        arraylist2.remove(1);

              "clone"进行复制,arraylist2指向新产生的对象,互不干扰

        ArrayList<Integer> arraylist2=new ArrayList<>();
        arraylist2=(ArrayList<Integer>) arraylist.clone();
        arraylist2.remove(1);

    (5)截取

        arraylist=(ArrayList<Integer>) arraylist.subList(1, 3);//原列表第2-4个元素组成的列表

    (6)获取元素位置

        int a=arraylist.indexOf(3);//第一次出现的位置
        int b=arraylist.lastIndexOf(3);//最后一次出现的位置

   3.遍历

       (1)for循环遍历

        for(Integer item:arraylist) {
            System.out.println(item);
        }

       (2)for循环索引遍历

        for(int i=0;i<arraylist.size();i++) {
            System.out.println(arraylist.get(i));
        }

        (3)迭代器遍历

        Iterator<Integer> iterator=arraylist.iterator();
        while(iterator.hasNext()) {
            System.out.println(iterator.next());
        }

 

LinkedList

   1.创建

       LinkedList<Integer> linkedlist=new LinkedList<>();

   2.基本操作

       (1)add添加

        linkedlist.add(1);
        linkedlist.add(2);//添加到末尾
        linkedlist.add(new Integer(5));
        linkedlist.add(9);//自动装箱,将int 类型9装箱为Integer
        linkedlist.add(1,3);//在索引位置为1的地方添加3,即添加元素为第二个元素

    (2)remove删除

       linkedlist.remove(2);//删除索引位置为2元素,即删除第三个元素

       linkedlist.remove();//删除列表头部元素

    (3)clear清空

    (4)复制

                  “=”进行复制,实际是两个变量指向同一对象,linkedlist2进行删除或添加,linkedlist也会发生相同变化,即两个指针操作同一对象

        LinkedList<Integer> linkedlist2=new LinkedList<>();
        linkedlist2=linkedlist;
        linkedlist2.remove(1);

              "clone"进行复制,linkedlist2指向新产生的对象,互不干扰

        LinkedList<Integer> linkedlist2=new LinkedList<>();
        linkedlist2=(LinkedList<Integer>) linkedlist.clone();
        linkedlist2.remove(1);

    (5)获取元素位置

        int a=linkedlist.indexOf(3);//第一次出现的位置
        int b=linkedlist.lastIndexOf(3);//最后一次出现的位置

   3.遍历

       (1)for循环遍历

        for(Integer item:linkedlist) {
            System.out.println(item);
        }

       (2)for循环索引遍历

        for(int i=0;i<linkedlist.size();i++) {
            System.out.println(linkedlist.get(i));
        }

        (3)迭代器遍历

        Iterator<Integer> iterator=linkedlist.iterator();
        while(iterator.hasNext()) {
            System.out.println(iterator.next());
        }

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值