A, ajuste en el valor java (Colección), Key - Valor (Mapa)
Los valores almacenados se divide en lista y conjunto.
lista está ordenada, repetible
conjunto no están ordenados, no se puede repetir. Los iguales de determinación y código hash, un objeto que se va a almacenar en el conjunto, y debe invalidar método equals código hash
B, lista de clases de implementación: ArrayList, Vector, ListaEnlazada (bidireccional lista enlazada circular)
1. La estructura de datos subyacente
ArrayList, Vector subyacenteSe basan en una gama de alta eficiencia de la consulta, las supresiones de baja eficiencia (Vector es thread-safe, la eficiencia global es menor que la ArrayList)
inferior ListaEnlazadamanera dependiente circular lista enlazada, adiciones y supresiones de alta eficiencia, baja eficiencia de la consulta
2. Los términos de elementos de almacenamiento
elementos ArrayList, Vector, ListaEnlazada en un ordenado, repetible permiten valores nulos,
3. expansión de la capacidad
Una expansión de 1,5 veces ArrayList
Vector Los incrementos graduales de expansión 0, el doble de la expansión de la capacidad; + delta capacidad de otro modo original de
LinkedList no expansión
4. Seguridad de los hilos
ArrayList, hilo LinkedList seguro(Si hay varias hebras necesitan acceder a la lista de elementos de la colección, considere el uso de una colección de colecciones Colecciones envasados en hilo de seguridad)
Vector thread-safe
C, conjunto de clases de interfaz: HashSet, LinkedHashSet, TreeSet
HashSet
- No se puede tener los mismos elementos,Es posible que tenga una serie de elementos nulos, Elementos depositados se desordenada
- La estructura de datos subyacente es una tabla hash, la tabla hash se almacena en una serie de tablas, el valor hash se genera por el hashCode objeto ()
- La única manera de asegurarse de que dos de: hashCode () y equals () método
- Non-thread-safe
LinkedHashSet
- No se puede tener los mismos elementos,Puede tener un valor nulo, El elemento cargado en estricta conformidad con el orden
- estructura de datos subyacente compuesta por una tabla hash y la cadena
- Es decir, una lista ordenada para asegurar los elementos de extracción y almacenamiento consistentes con los elementos de la tabla hash para garantizar la unicidad
- Non-thread-safe
TreeSet
- No se puede tener los mismos elementos,No tener un valor nulo, Ordenados según el orden natural de los elementos
- El árbol rojo-negro está estructuras de datos subyacente (un árbol binario de búsqueda auto-equilibrio)
- Non-thread-safe
D, clase de implementación del Mapa: HashMap, HashTable, TreeMap, LinkedHashMap
HashMap
-
Hilo de seguridad, de alta eficiencia. valores null y teclas que permiten
-
interfaz de mapa se basa en una tabla hash. El papel de la tabla hash se utiliza para garantizar la unicidad de la clave.
-
Ejemplos de métodos comunes:
new HashMap<Object,Object>();
Tabla de picadillo
- Hilo de seguridad, la baja eficiencia. No permite llaves nulos y valores nulos
ashanap Laidaked ः
-
Se basa en la tabla hash para lograr una ordenada y una lista de enlaces a la interfaz del mapa
-
Por una tabla hash para garantizar la singularidad clave
-
(Lo mismo orden de almacenamiento y retirada) de la lista ordenados garantizada bono vinculado
-
Ejemplos de métodos comunes:
new LinkedHashMap<Object,Object>();
TreeMap
-
interfaz del mapa es lograr basada árbol rojo-negro
-
constructor
TreeMap(); //使用键的自然顺序构造一个新的、空的数映射 //构造一个新的、空的树映射,该映射根据给定比较器进行排序 TreeMap(Comparator<?super K>comparator)
La diferencia entre HashMap y HashTable, HashTable con el ConcurrentHashMap
- El HashMap es nulo o un valor clave, que no es posible HashTable
- HashMap no es seguro para subprocesos, de alta eficiencia. Y HashTable son seguros para subprocesos, la baja eficiencia
- ConcurrentHashMap también seguro para subprocesos, que es un gran mapa, mapa y se divide en varios pequeños, más bloqueo, respectivamente, y por lo tanto más eficiente que HashTable.