------- android培训、java培训、期待与您交流! ----------
一、集合体系:
1.Collection(单列)
1.1 List(有序,可重复)
ArrayList:
底层数据结构是数组,查询快,增删慢。线程不同步,效率高。
LinkedList:底层数据结构师链表,查询慢,增删快。线程不同步,效率高。
Vector:底层数据结构师数组,查询快,增删慢。线程同步,效率低。
1.2 Set(无序,唯一)
HashSet:底层数据结构是哈希表。线程不同步,效率高。怎么保证唯一性的呢?
它依赖两个方法: hashCode()和equals()顺序:首先判断hashCode()值是否相同。
同:继续走equals(),看返回值如果true就不添加集合。如果false:就添加到集合。
TreeSet:底层数据结构是二叉树。线程不同步,效率高。怎么保证唯一性的呢?是根据返回是否是0
怎么保证排序的呢?
一、自然排序(元素具备比较性)实现Comparable接口
二、比较器排序(集合具备比较性)实现Comparator接口
2.Map(双列 底层结构是针对键有效,跟值无关)
HashMap:底层数据结构师哈希表,线程不同步,效率高。
怎么保证唯一性呢?
它依赖两个方法:hashCode()和equals()顺序:首先判断hashCode()值是否相同。同:继续走equals(),
看返回值如果为true:就补添加集合。如果false:就添加到集合。不同:就添加到集合。
TreeMap:底层数据结构师二叉树。线程不同步,效率高。
怎么保证唯一性的呢?是根据返回是否是0
怎么保证排序呢?两种方式自然排序(元素具备比较性)实现Comparable接口比较器排序(集合)
二、集合常见应用功能
(添加功能,判断功能,删除功能,获取功能,长度功能)
1.Collection<E>接口:
add(E e);rermove(Object o);contains(Object o);iterator();size()
2.List<E>接口:
add(E e);get(int index);add(int index,E element);remove(int index);set(int index,E element)
添加时如果集合有相同元素,则存数失败
3.Map<K,V>接口
put(K key,V value);remove(Object key);containsKey(Object key);containsValue(Object value);
size();get(Object key);keySet();values();
三、遍历方式
1.ListSet迭代器:
Iterator;
ListIterator;
2.Map迭代器:
有两种选择一种去用即可。
(妻子找丈夫)键和值
(结婚证找妻子和章法)键和值映射关系
3.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