zoukankan      html  css  js  c++  java
  • java中List集合

           List集合是一个元素有序可以重复的集合,集合中每个元素都有其对应的顺序索引。List集合允许使用重复集合,前面博客写到Set不允许有重复集合。List集合可以通过索引来访问指定位置的集合元素。

           List实现了Collection接口,故可以使用Collection接口的所有方法。而且由于List是有序集合,List可以根据索引来操作集合元素的方法。这些方法我们在平时使用list的会经常用到,比如:add(),addAll(),remove(),set()等方法,当然对于List去除重复,我们也可以使用remove()方法,另外Java8 还提供了sort(Comparator c)方法进行排序,根据Comparator参数对于List集合的元素排序。

    List实现类:

           

           (一)ArrayList类:

               ArrayList是常用的List实现类,封装了一个动态的,允许再分配的Object[]数组。由于使用的是数组,所以每个元素之间不能有间隔。当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动、代价比较高。因此,它适合随机查找和遍历,不适合插入和删除,允许空元素。

               ArrayList是线程不安全的,当多个线程访问同一个ArrayList集合时,如果超过一个线程改变ArrayList集合的值时,程序员必须通过手动保证集合的同步性。


            (二)Vector集合

               Vector与ArrayList一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费。使用Vector可以保证线程安全,但保证了安全,性能相对于ArrayList要低一些。


            (三)LinkedList集合

                 由于存在链表,是用链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢,由于接口中没有定义的方法get,remove,insertList,专门用于操作表头和表尾元素,可以当作堆栈、队列和双向队列使用。LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。  

       

    总结:

        这三个类是List的最主要的实现类,在不同的场景下有不同的应用,但我们平时使用最多的是ArrayList,虽然ArrayList不是线程安全的,但后面可以用一个Collections的工具类,它可以将一个ArrayList编程线程安全的。       

         


  • 相关阅读:
    2015.2.27 UltraEdit中显示XML结构
    2015.1.31 DataGridView自动滚动到某行
    2015.1.15 利用函数实现将一行记录拆分成多行记录 (多年想要的效果)
    2015.1.15 利用Oracle函数返回表结果 重大技术进步!
    2015.1.15 利用Oracle函数插入表结构 Bulk collect into 不用循环,简洁高效
    2015.1.8 Left join 左连接
    2015.1.10 解决DataGridView SelectionChanged事件自动触发问题
    delphi 遍历窗口
    delphi 访问 protected 属性 哈哈
    clientdataset 读取excel 如果excel 文件不存在的时候 相应的gird 会不显示数据, 鼠标掠过 gird 格子 才会显示数据。 这是一个bug 哈哈
  • 原文地址:https://www.cnblogs.com/zsswpb/p/6329437.html
Copyright © 2011-2022 走看看