1.集合类
|--List<E>
|--ArrayList<E>由数组实现的List。允许对元素进行快速随机访问 线程不安全
|--LinkedList<E> 对顺序访问进行了优化,插入与删除的开销并不大。线程不安全
|--Vector<E> 数组方式存储数据,索引数据快插入数据慢,线程安全
Map<K,V>
|--ArrayMap<K, V>
|--HashMap<K, V>基于散列表的实现,允许空键空值,线程不安全
|--LinkedHashMap<K,V>有序HashMap
更多详情见:https://blog.csdn.net/hello_jiangdong/article/details/79224230
2.内部类
100.Array List HashMap HashSet …区别
collection 集合接口
|--List<E>值允许重复,有序的数据结构 按对象进入的顺序保存对象,不做排序或编辑操作
|--ArrayList<E>由数组实现的List。允许对元素进行快速随机访问,中间插入与移除元素的速度很慢 数组方式存储数据,索引数据快插入数据慢, 线程不安全|--LinkedList<E> 对顺序访问进行了优化,插入与删除的开销并不大。随机访问则相对较慢 双向链表实现存储,索引数据慢插入数度较快, 线程不安全(比安全性能好)
|--Vector<E> 数组方式存储数据,索引数据快插入数据慢, 线程安全
|--Stack 实现一个后进先出的堆栈
|--Set<E> 无顺序,不包含重复的元素, 加入Set的元素必须定义equals()方法以确保对象的唯一性
|--ArraySet<E>
|--HashSet<E>为快速查找设计的Set
|--LinkedHashSet<E>内部使用链表维护元素的顺序(插入的次序)。
|--TreeSet<E> 保存次序的Set, 底层为树结构。使用它可以从Set中提取有序的序列。
|--Queue<E>|--BlockingQueue<E>
|--ArrayDeque<E>
Map<K,V> 维护“键值对”的关联性,使你可以通过“键”查找“值” 成对的数据结构,健值必须具有唯一性(键不能同,否则值替换)
|--ArrayMap<K, V>
|--HashMap<K, V>基于散列表的实现,允许空键空值, 线程不安全
|--LinkedHashMap<K,V>类似于HashMap,但是迭代遍历它时,取得“键值对”的顺序是其插入次序,或者是最近最少使用(LRU)的次序
|--Hashtable<K,V>基于散列表的实现,允许空键空值, 线程安全
|--WeakHashMap<K, V> 弱键(weak key)Map,Map中使用的对象也被允许释放 如果没有map之外的引用指向某个“键”,则此“键”可以被垃圾收集器回收。
|--TreeMap<K, V>基于红黑树数据结构的实现。查看“键”或“键值对”时,它们会被排序 允许空键空值, 线程安全 subMap()方法可以返回一个子树
|--IdentifyHashMap<E> 使用==代替equals()对“键”作比较的hash map
SparseArray<E>:采用了二分法方式存储数据(安卓的一个集合类)可代替HashMap<Integer, E>
101.内部类 …
静态内部类,
只能访问外部类的静态成员变量与静态方法。
静态内部类可以声明静态的成员变量,其他的内部类不可以
静态内部类只能访问静态程序
成员内部类
成员内部类可以访问外部类的静态与非静态的方法和成员变量。
在局部内部类中访问外部类的成员变量的方法:OuterClass.this.a;
局部内部类
类似于局部变量,不能定义为public,protected,private或者static类型。
定义方法中,只能方法中声明为final类型的变量。
只能在所在方法区域创建
匿名内部类
匿名内部类没有类名,没有class关键字也没有extends和implements等关键字修饰。
匿名内部类会隐式地继承一个父类或实现一个接口。
3.