美文网首页
集合Collection之List(有序,重复)

集合Collection之List(有序,重复)

作者: 紫雨杰 | 来源:发表于2018-06-11 11:22 被阅读0次

一、List集合常见的子类有:


  1、ArrayList:
          底层数据结构是Objetc数组,查询快,增删慢。线程不安全,效率高。

  2、Vector:
          底层数据结构是Objetc数组,查询快,增删慢。线程安全,效率低,因为它给整个方法上面添加了synchronized,太笨重了。

  3、LinkedList:
          底层数据结构是双向链表,查询慢,增删快。线程不安全,效率高。

  4、CopyOnWriteArrayList:
          底层数据结构是Objetc数组,查询快,增删慢。线程安全。

          ● ArrayList的一个线程安全的变体,其中所有可变操作(add、set 等等)都是通过对底层数组进行一次新的复制来实现的。

          ● 这一般需要很大的开销,但是当遍历操作的数量大大超过可变操作的数量时,这种方法可能比其他替代方法更有效。
            在不能或不想进行同步遍历,但又需要从并发线程中排除冲突时,它也很有用。

          ● 允许使用所有元素,包括 null。

          ● 此数组在迭代器的生存期内不会更改,因此不可能发生冲突,并且迭代器保证不会抛出 ConcurrentModificationException。
             【即允许迭代器遍历集合,集合修改元素】

     案例:

        public static void main(String[] args) {
              CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
              list.add("Hello");
              list.add("world");
              list.add("java");

             //允许迭代器遍历集合,集合修改元素
              ListIterator iterator = list.listIterator();
              while (iterator.hasNext()) {
                  String s = (String) iterator.next();
                  if("world".equals(s)) {
                      list.add("PGH");
                  }
                  System.out.print(s + " ");    //Hello world java  迭代器中元素不变
              }
              System.out.println(list);   //[Hello, world, java, PGH]
          }

          ● 创建迭代器以后,迭代器就不会反映列表的添加、移除或者更改。在迭代器上进行的元素更改操作(remove、set 和 add)不受支持。
            这些方法将抛出 UnsupportedOperationException。
             【即不允许迭代器遍历集合,迭代器修改元素】

     案例:

        public static void main(String[] args) {
              CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
              list.add("Hello");
              list.add("world");
              list.add("java");

             //不允许迭代器遍历集合,迭代器修改元素,报错UnsupportedOperationException
              ListIterator iterator = list.listIterator();
              while (iterator.hasNext()) {
                  String s = (String) iterator.next();
                  if("world".equals(s)) {
                      iterator.add("PGH");
                  }
              }
              System.out.println(list);   //java.lang.UnsupportedOperationException
          }
        

相关文章

  • List 和 Set 区别

    List、Set都是集继承集合Collection,属于Collection子类; List是有序集合,允许重复值...

  • 代码小知识3

    1:集合(自己补齐) Collection(单列集合) List(有序,可重复) ...

  • Java基础知识02

    3.集合 collection ------List 有序可重复 --------------ArrayList ...

  • Java集合体系总结

    一、Collection(单列集合) List 有序 可重复 Set 无序 不可重复 二、Map(双列集合) ...

  • 集合接口及其方法

    ---| Collection 集合接口 总接口------| List 有序 可重复---------| Arr...

  • 集合

    --------| Collection 接口,集合的总接口 List 有序 可重复Set 无序 不可重复 --...

  • 2018-06-05

    集合 体系结构collection:list,queue,set map list有序并且可以重复的集合 ;arr...

  • JAVA 集合 Collection(5)

    集合 Collection collection List :元素是有序的,元素可以重复,因为该集合体系有索引。 ...

  • 集合Collection之List(有序,重复)

    一、List集合常见的子类有:

  • List集合方法实例演示

    List 概述 List集合接口继承了Collection集合接口,此集合的元素是有序的,且允许重复。 下面示例常...

网友评论

      本文标题:集合Collection之List(有序,重复)

      本文链接:https://www.haomeiwen.com/subject/htgwlftx.html