单列集合
顶层接口:Collection
List体系
特点:有序(存,取一致),可重复。
子类:
ArrayList
底层数据结构是数组,查询快,增删慢,线程不安全,效率高。
Vector
数组。。。。 安全,效率低
LinkedList
链表。。查询慢,, 不安全,效率高。
Set体系
特点:无序(),唯一。
子类:
HashSet
哈希表,线程不安全,效率高。
是怎么保证元素唯一性的?
依赖 。。
LinkedHashSet:底层是链表,是Set体系中唯一一个可以保证 怎么存就怎么取的集合类。
TreeSet
二叉树,不安全,效率高。
是怎么保证元素唯一性的?
第一种:
自然排序。
让基本类去实现Comparable接口,然后重写接口中的compareTo()方法
第二种:
通过比较器接口。
创建TreeSet集合对象的时候,传入一个比较器接口Comparator的 子类对象即可。
排序的时候:
前 - 后: 小到大。
后 - 前:
框架图
单列集合
顶层接口:Collection
List体系
特点:有序(存,取一致),可重复。
子类:
ArrayList
底层数据结构是数组,查询快,增删慢,线程不安全,效率高。
Vector
数组 安全,效率低
LinkedList
链表。。查询慢,, 不安全,效率高。
Set体系
特点:无序(),唯一。
子类:
HashSet
哈希表,线程不安全,效率高。
是怎么保证元素唯一性的?
依赖 。。
LinkedHashSet:底层是链表,是Set体系中唯一一个可以保证 怎么存就怎么取的集合类。
TreeSet
二叉树,不安全,效率高。
是怎么保证元素唯一性的?
第一种:
自然排序。
让基本类去实现Comparable接口,然后重写接口中的compareTo()方法
第二种:
通过比较器接口。
创建TreeSet集合对象的时候,传入一个比较器接口Comparator的 子类对象即可。
排序的时候:
前 - 后: 小到大。
后 - 前:
双列集合
Map
HashMap
哈希表,线程不安全,效率高。
如果键是自定义类型,怎么保证键的唯一?
依赖 。。
LinkedHashMap:
底层是链表,可以保证怎么存,就怎么取。
TreeMap
二叉树,不安全,效率高。
如果键是自定义类型,怎么保证键的唯一?
第二种:
通过比较器接口。
创建TreeSet集合对象的时候,传入一个比较器接口Comparator的 子类对象即可。
第一种:
自然排序。
让基本类去实现Comparable接口,然后重写接口中的compareTo()方法
面试题:
Collection和Map的区别:
Collection:
单列,Set体系唯一,数据结构针对元素。
Map:
双列,键是唯一,数据结构针对键有效。
HashMap和Hashtable
HashMap:
JDK1.2,线程不安全,效率高,可以存null值和键
Hashtable:
JDK1.0,安全,效率低,不能存null值和键
t是小写
双列集合
Map
HashMap
哈希表,线程不安全,效率高。
如果键是自定义类型,怎么保证键的唯一?
依赖 。。
LinkedHashMap:
底层是链表,可以保证怎么存,就怎么取。
TreeMap
二叉树,不安全,效率高。
如果键是自定义类型,怎么保证键的唯一?
第二种:
通过比较器接口。
创建TreeSet集合对象的时候,传入一个比较器接口Comparator的 子类对象即可。
第一种:
自然排序。
让基本类去实现Comparable接口,然后重写接口中的compareTo()方法
|
|