您的位置:首页 > 理论基础 > 数据结构算法

黑马程序员——高新技术---Java基础-集合特点和数据结构总结

2015-07-28 21:13 459 查看
[b]-----------android培训java培训、java学习型技术博客、期待与您交流!------------ 
[/b]

Collection接口:
|---List有序,可以存储重复元素
|----ArrayList数组实现,线程不安全,效率高
 
|----Vector 数组实现,线程安全,效率低
 
|----LinkedList链表实现,线程不安全,效率高
 
|---Set无序,不能存储重复元素
|---HashSet哈希表实现,线程不安全,效率高
保证唯一性:hashcode()和equals()方法

 
|--LinkedHashSet链表,哈希表实现,线程不安全,效率高
 
|----TreeSet 树实现,线程不安全,效率高
对元素排序的,要排序,就要比较,比较方式:
1,自然排序:我们的类要实现Comparable接口,重写comparaTo()方法。
2,我们的类不需要实现任何接口,自定义一个比较器,实现Comparator接口,重写compare()方法
实例化TreeSet时,传递自定义比较器对象。

 
Map接口:双列集合,使用键值对存储
|----HashMap哈希表实现,线程不安全,效率高
保证键的唯一性,同Hashset

 
|---TreeMap树实现,线程不安全,效率高。
对键的排序,同TreeSet

 
|----LinkedHashMap链表、哈希表实现,线程不安全的,效率高。
 
|----Hashtable哈希表实现,线程安全,效率低。

 
数据结构:
1,数组:查询快。增删慢
2,链表:查询慢,增删快
3,栈:后进先出
4,队列:先进先出
5,哈希表:综合了数组和链表的优点,查询、增删都很快
6,第一个存储的作为根节点,再存储元素时,要跟已存元素比较,比已存元素大,存在当前节点的右侧,比已存元素小,存在当前节点的左侧。如果相等则不存。
 
集合的选择:(如何选择使用哪种集合?)
 
需要单列还是双列?
单列:Colllection:
有序:List:
经常查询,但不经常修改:ArrayList (单线程,快)Vector(多线程,慢)
经常修改元素的数量:LinkedList
无序:Set:
是否需要排序?
不要排序:HashSet(无序)
LinkedHashSet(有序)

需要排序:TreeSet
双列:Map:
不要排序:HashMap,LinkedHashMap
排序:TreeMap

 

 
各种集合的遍历方式:
Collection:
1,toArray()
2,迭代器 iterator
3,增强for

|---List
4,使用Collection的size()和List的get(int
indec)方法使用普通for循环
List特有的迭代器ListIterator

|----Set
(无)
 
Map:
   1,KeySet()-->遍历Set(键)
   2,entrySet()-->遍历Set<Map.Entry>
 
普通for循环和增强for循环的区别:
增强for循环没有普通循环变量

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
-------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息