【Java编程的逻辑】容器类的总结

标签: 容器类 Collection Map
6人阅读 评论(0) 收藏 举报
分类:

抽象容器类

容器类体系与抽象容器类

用法和特点

容器类有两个根接口,分别是CollectionMap ,Collection表示单个元素的集合,Map表示键值对的集合 。

Collection

Collection表示的数据集合有基本的增、删、查、遍历等方法,但没有定义元素间的顺序或位置,也没有规定是否有重复元素。

List: 是Collection的子接口,表示有顺序或位置的数据集合,增加了根据索引位置进行操作的方法,如:get(int index)。它有两个主要的实现类:ArrayListLinkedList。ArrayList基于数组实现,LinkedList基于链表实现;ArrayList的随机访问效率很高,但从中间插入和删除元素需要移动元素,效率较低,LinkedList则正好相反,随机访问效率很低,但增删元素只需要调整邻近节点的链接

Set: 是Collection的接口,没有增加新的方法,但可以保证不包含重复元素。它有两个主要的实现类HashSetTreeSet。HashSet基于哈希表实现,要求键重写hashCode方法,效率更高,但元素间没有顺序;TreeSet基于排序二叉树实现,元素按比较有序,元素需要实现Comparable接口,或者创建TreeSet时提供一个Comparator对象。HashSet还有一个子类LinkedHashSet可以按插入有序。

Queue: 是Collection的子接口,表示先进先出的队列,在尾部添加,从头部查看或删除。Deque是Queue的子接口,表示更为通过的双端队列,有明确的在头或尾进行查看、添加和删除的方法。普通队列有两个主要的实现类,LinkedListArrayDeque,LinkedList基于链表实现,ArrayDeque基于循环数组实现,一般而言,如果只需要Deque接口,ArrayDeque的效率更高一些。

Deque还有一个特殊的实现类PriorityQueue,它表示优先级队列,内部是用实现的,堆除了用于实现优先级队列,还可以高效方便的解决很多其他问题,比如求前K个最大的元素、求中值等。

Map

Map接口表示键值对集合,经常根据键进行操作,它有两个主要的实现类,HashMap和TreeMap。HashMap基于哈希表实现,要求键重写hashCode方法,操作效率很高,但元素没有顺序。TreeMap基于排序二叉树实现,要求键实现Comparable接口,或提供一个Comparator对象,操作效率稍低,但可以按键有序。

HashMap还有一个子类LinkedHashMap,它可以按插入或访问有序。之所以能有序,是因为每个元素还加入到了一个双向链表中。如果键本来就是有序的,使用LinkedHashMap而非TreeMap可以提高效率。按访问有序的特点可以方便的用于实现LRU缓存。

小结

这里写图片描述

查看评论

Part 13:Cocos2d-x开发实战-Cocos2d-x中使用的数据容器类

介绍了Cocos2d-x中可以使用的数据容器类,还有熟悉Cocos2d-x中两大类——Ref和Value。最后重点介绍了__Array、Vector、__Dictionary、Map、ValueVector、ValueMap和ValueMapIntKey这7个容器类。
  • 2016年04月11日 17:52

JAVA 容器类总结

原文出处:http://www.cnblogs.com/wishyouhappy/p/3669198.html 1.java容器分类图   说明:第一个图为简化图(其中粗线部分是重点的容器...
  • buptdavid
  • buptdavid
  • 2015-02-04 11:05:17
  • 1646

【Java编程的逻辑】编程基础

数据类型和变量 数据类型用于对数据归类,以便于理解和操作。 - 整数类型:byte/short/int/long, 分别有不同的取值范围 - 小数类型:float/double,有不同的取值...
  • u013435893
  • u013435893
  • 2018-02-23 14:05:22
  • 237

《Java编程的逻辑》的源代码,作者: 马俊昌

  • 2018年02月08日 21:42
  • 15.31MB
  • 下载

一个人总结的java编程经验汇总

也是今天看博客的时候无疑中发现的,就看以几行就觉的不简单,发现很多转载的但是出自那里就不知道了。这里复制过来,提醒自己: 未来要走的路还很多很远,不能停下脚步。一定要keep moving。 --...
  • u012514606
  • u012514606
  • 2015-02-10 21:45:58
  • 2955

java编程相关总结(一)

java编程思想总结(一)java编程思想总结是一个持续更新的系列,是本人对自己多年工作中使用到java的一个经验性总结,也是温故而知新吧,因为很多基础的东西过了这么多年,平时工作中用不到也会遗忘掉,...
  • klsstt
  • klsstt
  • 2016-06-28 09:48:33
  • 877

关于容器类的总结

关于容器类的总结C++中的容器类包括“顺序存储结构”和“关联存储结构”,前者包括vector,list,deque等;后者包括set,map,multiset,multimap等。若需要存储的元素数在...
  • yiyele
  • yiyele
  • 2017-09-19 00:23:17
  • 551

Java有趣逻辑编程题

题目:有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。          木杆很细,不能同时通过一只蚂蚁。          开始时,蚂蚁的头朝左...
  • s373492212
  • s373492212
  • 2017-07-18 14:45:47
  • 1357

【逻辑思考】有什么写年终总结的诀窍吗?能升职加薪走上人生巅峰的那种?

今天思考的话题是“有什么写年终总结的诀窍吗?能升职加薪走上人生巅峰的那种?”这是在分答上看到的一个话题,回答的人也很多。我的回答:描述:1、写给谁看?2、以什么样的表现形式?3、工匠精神语音内容:您好...
  • testcs_dn
  • testcs_dn
  • 2016-12-26 09:19:27
  • 1208
    个人资料
    持之以恒
    等级:
    访问量: 2万+
    积分: 1094
    排名: 4万+
    最新评论