黑马程序员--Java面向对象——集合框架总结
2014-06-25 11:23
302 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
面向对象
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>接口
|--List<E>接口
|--Set<E>接口
添加时如果集合有相同元素,则存储失败。
|--Map<K,V>接口
遍历方式
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(真正开发中也不用)
否:ArrayList,LinkedList
注意:查询多:ArrayList
增删多:LinkedList
不懂的情况下,使用ArrayList
面向对象
集合体系
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() |
布尔型 | add(E e) |
E | get(int index) |
无返回值 | add(int index,E element) |
E | remove(int index) |
E | set(int index, E element) |
布尔型 | 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(真正开发中也不用)
否:ArrayList,LinkedList
注意:查询多:ArrayList
增删多:LinkedList
不懂的情况下,使用ArrayList
相关文章推荐
- 黑马程序员 Java面向对象——集合框架总结
- 黑马程序员 Java基础知识总结-j集合框架
- 黑马程序员 11 Java基础教学 - 11 - 集合框架总结
- 黑马程序员---一DAY17总结--java中你必须掌握的集合框架技术
- 黑马程序员--Java面向对象——集合框架(Collection)
- 黑马程序员_java 集合框架学习总结
- 黑马程序员——面向对象的集合框架(java)
- 黑马程序员 Java学习总结之集合框架(List篇)
- 黑马程序员——java复习总结——集合框架
- 黑马程序员——Java总结(集合框架)
- 黑马程序员———Java基础------集合框架知识点总结(二)
- 黑马程序员_Java第14天知识总结_集合类(集合框架)_Collection_迭代器_List_Set_HashSet
- 黑马程序员_Java第17天知识总结_集合框架的工具类_Collections_Arrays_将数组变成list集合_集合变数组_高级for循环_可变参数
- 黑马程序员_java基础知识总结(3)集合框架
- Java面向对象——集合框架总结
- 黑马程序员-Java基础总结08——集合与集合框架(…
- 黑马程序员 Java面向对象——集合框架(Collection)
- 黑马程序员---一DAY16总结--java中你必须掌握的集合框架技术
- 黑马程序员--Java面向对象——集合框架(Map)
- 【黑马程序员】java集合框架学习总结