美文网首页
集合类的探究

集合类的探究

作者: vip昨夜星辰昨夜风 | 来源:发表于2017-07-05 18:48 被阅读8次

    在Java编程中除了八种基本的数据类型和所对应的包装类,以及String外,还有一种就是及集合类,常用的有ArrayList,HashMap,HashSet,也有不常用的Stack,Queue,有现成安全的Vector,HashTable,也有线程不安全的LinkedList,TreeMap等。

    如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:

    List list = Collections.synchronizedList(new LinkedList(...));

    Aarraylist和Linkedlist

    1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。

    2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。

    3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

    这一点要看实际情况的。若只对单条数据插入或删除,ArrayList的速度反而优于LinkedList。但若是批量随机的插入删除数据,LinkedList的速度大大优于ArrayList. 因为ArrayList每插入一条数据,要移动插入点及之后的所有数据。

    对List的选择

    1、对于随机查询与迭代遍历操作,数组比所有的容器都要快。所以在随机访问中一般使用ArrayList

    2、LinkedList使用双向链表对元素的增加和删除提供了非常好的支持,而ArrayList执行增加和删除元素需要进行元素位移。

    3、对于Vector而已,我们一般都是避免使用。

    4、将ArrayList当做首选,毕竟对于集合元素而已我们都是进行遍历,只有当程序的性能因为List的频繁插入和删除而降低时,再考虑LinkedList。

    相关文章

      网友评论

          本文标题:集合类的探究

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