msqluck

积跬步,至千里

集合

1:集合
Collection(单列集合)
List(有序,可重复)
ArrayList
底层数据结构是数组,查询快,增删慢
线程不安全,效率高
Vector
底层数据结构是数组,查询快,增删慢
线程安全,效率低
LinkedList
底层数据结构是链表,查询慢,增删快
线程不安全,效率高
Set(无序,唯一)
HashSet
底层数据结构是哈希表。
哈希表依赖两个方法:hashCode()和equals()
执行顺序:
首先判断hashCode()值是否相同
是:继续执行equals(),看其返回值
是true:说明元素重复,不添加
是false:就直接添加到集合
否:就直接添加到集合
最终:
自动生成hashCode()和equals()即可

LinkedHashSet
底层数据结构由链表和哈希表组成。
由链表保证元素有序。
由哈希表保证元素唯一。
TreeSet
底层数据结构是红黑树。(是一种自平衡的二叉树)
如何保证元素唯一性呢?
根据比较的返回值是否是0来决定
如何保证元素的排序呢?
两种方式
自然排序(元素具备比较性)
让元素所属的类实现Comparable接口
比较器排序(集合具备比较性)
让集合接收一个Comparator的实现类对象
Map(双列集合)
A:Map集合的数据结构仅仅针对键有效,与值无关。
B:存储的是键值对形式的元素,键唯一,值可重复。

HashMap
底层数据结构是哈希表。线程不安全,效率高
哈希表依赖两个方法:hashCode()和equals()
执行顺序:
首先判断hashCode()值是否相同
是:继续执行equals(),看其返回值
是true:说明元素重复,不添加
是false:就直接添加到集合
否:就直接添加到集合
最终:
自动生成hashCode()和equals()即可
LinkedHashMap
底层数据结构由链表和哈希表组成。
由链表保证元素有序。
由哈希表保证元素唯一。
Hashtable
底层数据结构是哈希表。线程安全,效率低
哈希表依赖两个方法:hashCode()和equals()
执行顺序:
首先判断hashCode()值是否相同
是:继续执行equals(),看其返回值
是true:说明元素重复,不添加
是false:就直接添加到集合
否:就直接添加到集合
最终:
自动生成hashCode()和equals()即可
TreeMap
底层数据结构是红黑树。(是一种自平衡的二叉树)
如何保证元素唯一性呢?
根据比较的返回值是否是0来决定
如何保证元素的排序呢?
两种方式
自然排序(元素具备比较性)
让元素所属的类实现Comparable接口
比较器排序(集合具备比较性)
让集合接收一个Comparator的实现类对象

2:到底使用那种集合
看需求。

是否是键值对象形式:
是:Map
键是否需要排序:
是:TreeMap
否:HashMap
不知道,就使用HashMap。

否:Collection
元素是否唯一:
是:Set
元素是否需要排序:
是:TreeSet
否:HashSet
不知道,就使用HashSet

否:List
要安全吗:
是:Vector(其实我们也不用它,后面我们讲解了多线程以后,我在给你回顾用谁)
否:ArrayList或者LinkedList
增删多:LinkedList
查询多:ArrayList
不知道,就使用ArrayList
不知道,就使用ArrayList

3:集合的常见方法及遍历方式
Collection:
add()
remove()
contains()
iterator()
size()

遍历:
增强for
迭代器

|--List
get()

遍历:
普通for
|--Set

Map:
put()
remove()
containskey(),containsValue()
keySet()
get()
value()
entrySet()
size()

遍历:

1,根据键找值 

                       Set<T> s=map.keySet(); 

                      for(T t:s){    value=map.get(t);}

2,根据键值对对象分别找键和值

                       Set<Map.Entry<T, V> > s=map.entrySet();

                      for(Map.Entry<T, V> m: s){

                              T t=m.getKey();

                             V v=m.getValue()

                         }

阅读更多
文章标签: 集合
个人分类: Javase
上一篇位运算符
下一篇网络osi,ip地址
想对作者说点什么? 我来说一句

x-skin集合x-skin集合

2010年03月17日 10.19MB 下载

事件集合js事件集合js事件集合

2010年06月19日 628KB 下载

网络工具集合网络工具集合

2009年03月07日 6.55MB 下载

Hibernate帮助文档集合

2012年10月17日 8.33MB 下载

debugging tools

2017年10月27日 70.68MB 下载

Java集合 练习代码

2017年10月21日 28KB 下载

Java Generics and Collections

2018年05月09日 2.13MB 下载

户型集合户型集合户型集合

2014年09月27日 11.63MB 下载

FLEX资料集合 FLEX资料集合

2010年03月20日 11.26MB 下载

没有更多推荐了,返回首页

关闭
关闭