Java中容器详解
容器的目的就是用来存储数据,数组也是一个容器。
collection称为容器或者集合
collection下面:
set:无顺序,不可重复
list:有顺序,可重复
Map下面存放键值对;
涉及到泛型,那我们就讲一下泛型:
例子:
容器中的常用方法:
ArrayList的使用:
ArrayList的描述:
如果要使用线程安全的话,使用vector
vector集合:
Map的讲解:
map集合的常用方法:
hashmap是继承map的子类:
查看hashmap的源码:
table:保存结点数值
我们能看到它有下一个结点
哈希表的结构示意图:
这里面的entry就是上面指的node,根据jdk版本不同名词也不同:
TreeMap:
实例:
HashSet:
实例:
TreeSet:
迭代器遍历:
集合Collection都继承了Iterable,所以只要是Collection下面的子集都继承了Iterable.
我们可以看到,调用iterator()方法,获取迭代器对象;
获取迭代器对象:
判断有没有下一个元素:
当前指向元素返回,并且游标指向下一个元素
这里我要解释一下,很多人有个误区,那就是.hasNext(),很多人认为hasNext()方法是判断下一个值是否还有,这种想法是错误的;
源码中解释了,它其实是当iterator调用了next方法之后,进行判断当前值是否存在,并不是很多人所说的判断下一个值是否存在。
这里要讲解一下map的迭代,因为相对于其他的来说比较特殊:
我们得通过entry来获得结点,然后在进行遍历,这里你首先得知道map结构是哈希表,它是数组和链表组成的,我们得先找到数组在遍历链表。
Collection工具类