1. Java 8种基本类型:byte char short int long double float boolean
- Byte:8位
- Short : 16位
- Int: 32位
- Long: 64位
- Float: 32位
- Double: 64位
2. List set map
List:有序;可重复;
- Arraylist: 底层数据结构是数组,查询快,增删慢;线程不安全;效率高;
- Vector: 底层数据结构是数组,查询快,线程安全;效率低;
- LinkedList:底层数据结构是链表,查询慢,增删快;线程不安全,效率高;
Set:无序;唯一;
- HashSet:底层数据结构是hash表;hash表依赖两个方法,hashCode()和equals();
执行顺序:首先判断hashCode()值:是否相同,
是:继续执行equals(),看其返回值,
是true,说明元素重复,不添加;
是false,就直接添加;
否:直接添加到集合
LinkedHashSet:底层数据结构由链表和hash表组成;由链表保证元素有序;由 hash表保证元素唯一;
- TreeSet:底层数据结构是红黑树。(是一种自平衡的二叉树)。
如何保证元素唯一性呢?
根据比较的返回值是否是0来决定。
如何保证元素的排序呢? 两种方式:
自然排序(元素具备比较性)
让元素所属的类实现Comparable接口
比较器排序(集合具备比较性)
让集合接收一个Comparator的实现类对象
- Map:key唯一,value可重复;
HashMap:底层数据结构是hash表。线程不安全,效率高;
hash表依赖两个方法,hashCode()和equals();
执行顺序:首先判断hashCode()值:是否相同,
是:继续执行equals(),看其返回值,
是true,说明元素重复,不添加;
是false,就直接添加;
否:直接添加到集合
LinkedHashMap:
底层数据结构由链表和hash表组成;
由链表保证元素有序;
由hash表保证元素唯一;
HashTable:底层数据结构是hash表。线程安全,效率低;
hash表依赖两个方法,hashCode()和equals();
执行顺序:首先判断hashCode()值:是否相同,
是:继续执行equals(),看其返回值,
是true,说明元素重复,不添加;
是false,就直接添加;
否:直接添加到集合
TreeMap:底层数据结构是红黑树。(是一种自平衡的二叉树)。
如何保证元素唯一性呢?
根据比较的返回值是否是0来决定。
如何保证元素的排序呢?两种方式:
自然排序(元素具备比较性)
让元素所属的类实现Comparable接口
比较器排序(集合具备比较性)
让集合接收一个Comparator的实现类对象