码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA集合接口及类

时间:2018-08-16 23:41:32      阅读:347      评论:0      收藏:0      [点我收藏+]

标签:插入数据   操作   线程   指针   inf   iterable   tor   迭代   treemap   

  • 各接口及类关系图

技术分享图片

 

技术分享图片

  • Iterable
    • 所有集合的初始接口,实现该接口可进行foreach操作,只有一个iterator()方法,并返回iterator类型;
    • Iterable在java.lang下,Iterator在java.util下,Iterator主要包括hasNext(), next(), remove();
    • 所有实现了Iterable就可以操作迭代器iterator, 但能使用迭代器iterator就未必实现了Iterable接口,如数组?
    • 为什么需要Iterable? 因为Iterator中的next(), hasNext()依赖于当前迭代器中迭代的位置(指针),如果Collection直接实现Iterator会使迭代位置不可知,需要增加reset重置当前迭代,但也只能存在一个当前迭代;而Iterable每次可从头开始计数,而且多个迭代互不影响。
  • Collection
    • 一个基本集合接口,包含一组Object元素;
    • 在java.util下,同时Collections是一个工具类,包含对集合各类操作的静态方法,比如sort;
    • Collection下有三个子接口:List, Set, Queue
  • List
    • 有序(保持插入数据时的顺序)、可重复的集合;
    • 子类ArrayList是基于数组实现的,但size动态可变化的;
    • 子类LinkedList实现 List<E>, Deque<E>, Cloneable, Serializable,双向链表接口;可作为双向Queue使用,也可以当做Stack使用;
    • ArrayList查询效率高于LinkedList, 因为访问LinkedList中的元素,需要每次从头指针开始移动,而ArrayList可直接通过数组下标的方式获取;但如果LinkedList通过Iterator, 则效率与ArrayList不会相差多少,因为Iterator方式遍历会缓存前后节点;
    • ArrayList插入和删除的效率会比LinkedList低,因为ArrayList每次插入或删除元素时,该元素的后续下标位置也要做相应的调整。
    • JDK1.2以后,Vector也是通过List接口实现的,Vector是线程安全的,ArrayList是非线程安全;
    • Stack是Vector子类,其主要特征是先进后出(FILO, First In Last Out)。
  • Set
    • Set集合里的元素没有顺序,但不能包含重复元素;
  • Map
    • 当把HashMap中的value都看成null时,可视为Set,其key的存储形式与Set一致;
    • TreeMap维护key以某种排序方式;

JAVA集合接口及类

标签:插入数据   操作   线程   指针   inf   iterable   tor   迭代   treemap   

原文地址:https://www.cnblogs.com/stpan/p/9485039.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!