Java中容器详解

容器的目的就是用来存储数据,数组也是一个容器。

Java中容器详解

Java中容器详解

collection称为容器或者集合

collection下面:

set:无顺序,不可重复

list:有顺序,可重复

Map下面存放键值对;

Java中容器详解

涉及到泛型,那我们就讲一下泛型:

Java中容器详解

Java中容器详解

例子: 

Java中容器详解

容器中的常用方法:

Java中容器详解

ArrayList的使用:

Java中容器详解

 ArrayList的描述:

如果要使用线程安全的话,使用vector

Java中容器详解

 vector集合:

Java中容器详解

 Map的讲解:

Java中容器详解

map集合的常用方法:

Java中容器详解

hashmap是继承map的子类:

Java中容器详解

Java中容器详解

Java中容器详解

查看hashmap的源码:

table:保存结点数值

Java中容器详解

 我们能看到它有下一个结点

Java中容器详解

哈希表的结构示意图:

Java中容器详解

这里面的entry就是上面指的node,根据jdk版本不同名词也不同:

Java中容器详解

 TreeMap:

Java中容器详解

Java中容器详解

实例:

Java中容器详解

HashSet:

Java中容器详解

实例: 

Java中容器详解

 TreeSet:

Java中容器详解

迭代器遍历:

集合Collection都继承了Iterable,所以只要是Collection下面的子集都继承了Iterable.

 Java中容器详解

我们可以看到,调用iterator()方法,获取迭代器对象;

Java中容器详解

 获取迭代器对象:

Java中容器详解

判断有没有下一个元素:

Java中容器详解

当前指向元素返回,并且游标指向下一个元素

Java中容器详解

 这里我要解释一下,很多人有个误区,那就是.hasNext(),很多人认为hasNext()方法是判断下一个值是否还有,这种想法是错误的;

源码中解释了,它其实是当iterator调用了next方法之后,进行判断当前值是否存在,并不是很多人所说的判断下一个值是否存在。

Java中容器详解

这里要讲解一下map的迭代,因为相对于其他的来说比较特殊:

我们得通过entry来获得结点,然后在进行遍历,这里你首先得知道map结构是哈希表,它是数组和链表组成的,我们得先找到数组在遍历链表。

Java中容器详解

Collection工具类

Java中容器详解