Java学习(三)数据结构
数据结构
部分常用数据结构
接口 | 概述 |
---|---|
LIST | 有序,可重复。一种知道索引位置的集合。 |
SET | 不允许重复。 |
MAP | 键值对、键唯一、值不唯一。 |
List(有序,可重复)
ArrayList
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
底层数据结构是数组,相当于是动态数组。查询快,增删慢
线程不安全,效率高。
遍历时使用下标for循环最省时。
Vector
public class Vector<E>
extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
底层数据结构是数组,查询快,增删慢
线程安全,效率低,还可以指定增长因子。
遍历时使用下标for循环最省时。
LinkedList
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable
底层数据结构是双向链表,查询慢,增删快
线程不安全,效率高。
遍历时使用迭代器最省时。
Set(无序,唯一)
HashSet
底层数据结构是哈希表。构造函数内初始化HashMap。HashSet是用HashMap来保存数据,而主要使用到的就是HashMap的key。
public class HashSet<E>
extends AbstractSet<E>
implements Set<E>, Cloneable, java.io.Serializable
public HashSet() {
map = new HashMap<>();
}
LinkedHashSet
public class LinkedHashSet<E>
extends HashSet<E>
implements Set<E>, Cloneable, java.io.Serializable
底层数据结构由双向链表和哈希表组成。内部实现使用LinkedHashMap。由链表保证元素有序。由哈希表保证元素唯一。
TreeSet
基于TreeMap实现的底层数据结构是红黑树。(是一种自平衡的二叉树)
public class TreeSet<E> extends AbstractSet<E>
implements NavigableSet<E>, Cloneable, java.io.Serializable
public TreeSet() {
this(new TreeMap<E,Object>());
}
Map(双列集合)
HashMap
底层数据结构是哈希表.由数组+链表组成的。线程不安全,效率高
LinkedHashMap
底层数据结构由链表和哈希表组成。由链表保证元素有序。由哈希表保证元素唯一。
Hashtable
底层数据结构是哈希表。线程安全,效率低。
TreeMap
底层数据结构是红黑树。(是一种自平衡的二叉树)
关于泛型
其中有三件事是重要的:
- 创建被泛型化类实例
new ArrayList<Test>()
- 声明与指定泛型类型的变量
List<Test> list = new ArrayList<Test>();
- 声明(与调用)取用泛型类型的方法
List<Test> testList = new ArrayList<Test>();
t.demo(testList);
private void demo(List<Test> list) {
}