一、采用接口和实现分离的设计方法
同一个数据结构的具体实现可以不同,但是对外必须提供统一的接口。
二、集合接口和迭代器接口
Collection:
(1)超接口Iterable<E>
Iterator:
(1)编译器将for each循环翻译为带有迭代器的循环(for each循坏可以与实现Iterable接口的对象工作)
(2)可以认为java的迭代器位于两个元素之间,代用next()方法会越过一个元素并返回越过元素的引用
(3)remove()方法会删除之前调用next()时返回的元素(不调next直接调remove会抛出异常)
三、集合框架
collection
???????? List(有序、可重复)
?????????????????? ArrayList(多个线程共同访问时可使用Vector)
?????????????????? LinkedList(可使用ListIterator遍历)
???????? Set(无序、不可重复)
?????????????????? TreeSet(会对数据进行排序)
?????????????????? HashSet
???????? Queue
map
??????? ? ? ? ? ? HashMap
????????????????? TreeMap
tips:有序是指存储的顺序和访问的顺序相同
散列表(哈希表) == HashSet
(1)保证自定义对象的equals()方法和hashCode()方法兼容啊a.equals(b)为true则a和b的hashCode相等
(2)存储结构:一个数组,每个位置后面挂着一个链表,hashCoed相同时挂到链表上(就是数据结结构上解决哈希表冲突的方法之一)
(3)再散列:根据装填因子决定何时进行再散列(default=0.75)
树 == TreeSet
(1)对其中的数据进行排序,排序方法可实现Comparable接口进行自定义或通过Comparator给出
映射表(存储键值对)
(1)Set<K>keySet()获取键的集合
(2)Collection<K> values()
(3)Set<Map.entry<K,V> >entrySet()
(4)IdentityHashMap()使用==好来比较作为键的对象