主体概述

Java的容器类主要由两个接口派生而出——Collection和Map:

ALL1.jpg
ALL2.jpg

TreeMap实现了SortedMap接口,因而是有顺序的

Set、List、Queue继承了Collection接口

TreeMap是基于树的实现,HashMap,HashTable,ConcurrentHashMap是基于hash表的实现

HashMap与TreeMap区别:

  1. HashMap通过hashcode快速查找插入,TreeMap中所有的元素都保持着某种固定的顺序(实现了SortedMap接口),若需要得到一个有序的结果应该使用TreeMap
  2. 在Map 中插入、删除和定位元素,HashMap 是最好的选择。使用HashMap要求添加的键类明确定义了hashCode()和equals()的实现。而TreeMap没有调优选项,因为该树总处于平衡状态

HashTable与HashMap

散列集基本概述

java中,散列表用链表数组实现,每个列表被称为桶,想要获取表中对象的位置,需要先计算其散列码,然后与桶的总数取余,所得结果就是保存这个元素的桶的索引

如果散列表太满,就需要再散列(rehashed,重新计算散列值),创建一个桶数更多的表,并将所有元素插入到表中,丢弃原来的表。装填因子(load factor)就决定了何时对散列表进行再散列,默认值为0.75,表示超过表中75%的位置被填满的时候会进行再散列。

HashSet与TreeSet

HashSet没有顺序,TreeSet则有

队列相关

一些方法的区别

boolean add(E element)
boolean offer(E element)
如果队列没有满,则添加到尾部并且返回true;如果满了,第一个方法抛出IllegalStateException,第二个返回false

E remove()
E poll()
如果队列不空,删除并返回头元素;为空,第一个方法抛出NoSuchElementException,第二个返回null

E element()
E peek()
如果队列不空,返回头元素,但不删除;为空,第一个方法抛出NoSuchElementException,第二个返回null

优先级队列:

优先级队列没有对所有的元素进行排序,而是使用了堆(大顶堆或者小顶堆),典型使用优先级队列的示例是任务调度

你可能感兴趣的:(主体概述)