集合学习小结

大愚LEE 2017-06-14 02:23:05
这几天学习了Collection集合和Map集合中的部分内容,Collection集合之下分了若干子接口,我主要学习List和Set集合,在其下又分了几个类,我主要学习了ArrayList和LinkedList,在Set集合中我主要学习了HashSet和TreeSet.在Map集合中我主要学习TreeMap和HashMap.
Collection:单列集合 Map:双列集合
List:有序(怎么样存进去再怎么样取出来),可重复(可以多次存入同一元素)
ArrayList:底层数据结构为数组,查询快增删慢,线程不安全所以效率高
LinkedList::底层数据结构为链表,查询慢增删快,线程不安全所以效率高
Vector:底层数据结构为数组,查询快增删慢,线程安全所以效率低
Set:无序(存入和取出顺序没有联系),不可重复
HashSet:底层数据结是哈希表,它主要依靠两个方法hashCode()和equals();首先判断元素的哈希值是否相同,如果相同,再调用equals方法,确定是否为同一元素。
LinkedHashSet::底层数据结构由链表和哈希表组成,由链表保证元素有序(怎么样输入怎样取出),由哈希表保证元素唯一。
TreeSet::底层数据结构是红黑树(一种自平衡的二叉树)。根据返回值是否为0来保证元素唯一,可通过两种方法实现元素排序:1、让元素所属的类实现Comparable接口2、让TreeSet集合接受一个Comparator的对象。
Map集合:
1、其底层数据结构可与上面分别进行对应
2、Map集合的数据结构仅对键有效而与值无关
3、Map集合中存储的是键值对形式的元素,键唯一,值可重复
HashMap
LinkedHashMap
TreeMap

如何选择我们需要的集合类型?根据实际情况
是否是键值对类型?
是:Map集合 键是否需要排序?
是:TreeMap
否:HashMap
如果不确定则一般选用HashMap集合
否:Collection集合 是否需要保证元素唯一?
是:Set集合 元素是否需要排序?
是:TreeSet
否:HashSet
如果不确定则一般选用HashSet集合
否:List集合 增删多还是查询多?
增删多:LinkedList
查询多:ArrayList
不确定就用ArrayList
...全文
91 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
李德胜1995 2017-06-14
  • 打赏
  • 举报
回复
不错,集合很重要的知识点,有空多看看源码。。。。

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧