容器框架(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());
        }

猜你喜欢

转载自blog.csdn.net/SignalFire/article/details/112939440
JCF