Java面向对象——集合框架总结

欢迎光临新长城博客中心


面向对象

集合体系

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接口

集合常见应用功能

(添加功能,判断功能,删除功能,获取功能,长度功能)

Collection<E>接口

布尔型add(E e)
布尔型remove(Object o)
布尔型contains(Object o)
迭代器iterator()
整数size() 

|--List<E>接口

布尔型add(E e)

 E

get(int index)

无返回值add(int index,E element)

 E

remove(int index)

 E


set
(int index, E element)

          

|--Set<E>接口

布尔型add(E e) 

添加时如果集合有相同元素,则存储失败。

|--Map<K,V>接口

 V
put
(K key,V value)

 V
remove
(Object key)
布尔型containsKey(Object key)

布尔型containsValue(Object value)
整数size()       

 V

get
(Object key)
 

Set<K>keySet()

Collection<V>values()

遍历方式
List Set迭代器

Iterator

ListIterator

Map迭代器

有俩种选择一种去用即可。

(妻子找丈夫)键和值

(结婚证找妻子丈夫)键和值映射关系

Map的两种典型遍历方式:

entrySet() 与 keySet()。entrySet的遍历方式要比keySet()高许多,因为欲取得同样的key-value对,keySet()相当于遍历了两次Map


集合那么多什么时候该用谁?

是否键值对?

是:Map

是否对键排序?

是:TreeMap

否:HashMap

不懂的情况下,使用HashMap。

否:Collection

是否唯一?

是:Set

是否对元素进行排序?

是:TreeSet

是否需要有序?

是:LinkedSet

否:HashSet

不懂的情况下,使用HashSet

否:List

是否要安全?

是:Vector(真正开发中也不用)

否:ArrayListLinkedList

注意:查询多:ArrayList

增删多:LinkedList

不懂的情况下,使用ArrayList



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值