A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qiaozengji668 中级黑马   /  2015-8-15 18:40  /  455 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


集合体系

Collection(单列)


List(有序,可重复)

ArrayList: 底层数据结构是数组,查询快,增删慢。线程不同步,效率高。   

LinkedList:底层数据结构是链表,查询慢,增删快。线程不同步,效率高。

Vector:      底层数据结构是数组,查询快,增删慢。线程同步,效率低。
Set(无序,唯一)

HashSet:底层数据结构是哈希表。线程不同步,效率高。 怎么保证唯一性的呢?它依赖两个方法:hashCode()和equals()。
一、hashCode()值是否相同。相同:equals(),返回值true:不添加到集合;返回值false:添加到集合。
                                               不同:添加到集合。

TreeSet:底层数据结构是二叉树。 线程不同步,效率高。 怎么保证唯一性的呢?它是根据返回值:是否=0。
怎么保证排序的呢?两种方式  
一、自然排序(元素具备比较性) 实现Comparable接口  
二、比较器排序(集合具备比较性) 实现Comparator接口

Map(双列 底层结构是针对键有效,跟值无关)


HashMap:底层数据结构是哈希表。线程不同步,效率高。
怎么保证唯一性的呢?
它依赖两个方法:hashCode()和equals()顺序:首先判断hashCode()值是否相同。同:继续走equals(),看返回值如果true:就不添加到集合。如果false:就添加到集合。不同:就添加到集合。

Hashtable:底层数据结构是哈希表。线程安全,效率低。
怎么保证唯一性的呢?
它依赖两个方法:hashCode()和equals()顺序:首先判断hashCode()值是否相同。同:继续走equals(),看返回值如果true:就不添加到集合。如果false:就添加到集合。不同:就添加到集合。


TreeMap:底层数据结构是二叉树。线程不同步,效率高。
怎么保证唯一性的呢?是根据返回是否是0。
怎么保证排序的呢?两种方式自然排序(元素具备比较性)实现Comparable接口比较器排序(集合具备比较性)实现Comparator接口


集合那么多不同情况该用那个集合?
是否键值对?
是:Map
是否对键排序?
是:TreeMap
否:HashMap
不懂的情况下,使用HashMap。
否:Collection
是否唯一?
是:Set
是否对元素进行排序?
是:TreeSet
是否需要有序?
是:LinkedSet
否:HashSet
不懂的情况下,使用HashSet
否:List
是否要安全?
是:Vector(真正开发中也不用)
否:ArrayListLinkedList
注意:查询多:ArrayList
增删多:LinkedList
不懂的情况下,使用ArrayList

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马