集合并不难,关键是找对学习方法!
什么是集合:集合就是一个放数据的容器,准确的说是放数据对象引用的容器
集合中最常用的几个:
Collection : 是一个接口
├List :元素有序 可重复 并引入位置下标
│├LinkedList :底层是双向循环链表。增删快,查询慢,线程不安全,效率高;
│├ArrayList :底层数据结构是数组 。查询快,增删慢,线程不安全,效率高;
│└Vector :底层数据结构是数组,查询快,增删慢,线程安全,效率低;
│ └Stack
└Set :元素无序,不可重复
├HashSet :无序的,底层数据结构是哈希表,储存对象的时候依赖两个方法:hashcode()和equals(),重写hashcode() 和equals()即可;
└TreesSet:按照自然顺序进行排列,如果是汉字会按照a-z排序,底层数据结构是红黑树。
对集合中的元素排序两种方式:
①自然排序(元素具有比较性)
让元素所属的类实现Comparable接口
②比较器排序(集合具有比较性)
让集合接收一个Comparator的实现类对象
└LinkedHashSet: 底层数据结构是哈希表和链表组成,链表保证有序,哈希表保证唯一
Map :
├Hashtable :不可以添加为空,底层数据结构是哈希表,线程安全,效率低;
├HashMap :可以添加为空,底层数据结构是哈希表,线程不安全,效率高
└WeakHashMap :以弱键 实现的基于哈希表的 Map。
└TreeMap:底层数据结构是红黑树,有序的,效率比 HashMap 低
└LinkedHashMap:底层数据结构是哈希表和链表组成,链表保证有序,哈希表保证唯一,仅比HashMap 慢一点