集合,就相当于一种数据结构,他可以是数组,二叉树,链表,哈希表。
例如,前端里的应用,按一个按钮,会有什么数据返回,可能会返回10多个数据,每一个都是对象,那么可以把这些结构放进集合里运输,集合本身也是对象。集合不能存基本类型。也不能直接存储对象,而是存储对象地址。
集合结构改变,迭代器要重新获取
Collection是一个大父类,里面的方法有:
add (加元素)
clear (清楚所有元素)
contains (确认有没有某一种元素)
isEmpty (判断集合是否为空)
remove (移出某一元素)
size (返回集合大小)
Iterator (返回一个迭代器)
迭代器相当于一个照相机,会将当前集合元素状态拍下来,然后遍历。
迭代器中的方法:
hasNext(判断是否还有下一个元素)
next(取出下一个元素)
remove(迭代器中的移出会将集合中的元素一起移出,所以不用重新获取迭代器)
每当集合元素有所改动,迭代器都应该重新获取。
list集合中相比父类collection多出的方法:
get(得到某一脚标的元素)
set(设置或者改变某一脚标的元素)
add(只写一个元素的,加到最后一位,写下角标和元素的则插入)
indexof(返回元素第一次出现角标)
lastIndexof(返回最后一次出现的角标)
map集合与collection没有继承关系
map的遍历方式
第一种:获取所有的key,通过遍历key,遍历valu
第二种,如图
hashmap
写哈希表的数据结构。在存入时,所有的元素都要重写equals和haxcode.
在这个表里,会先用hashcode判断哈希值,如果数组相应下标里没有元素则equals不会运行,如果有元素则会判断是否相等。
treemap
写二叉树的数据结构时,所有的元素都要实现接口comparable里的compareTo方法
二叉树里的元素,无序不可重复,但是可以自动排序,自动排序原理就是这个接口。
例如
public int compareTo(某比较的类型 )c{
return this.age - c.age;
}
自定义一个比较器:
写一个类,实现接口comparator
里面写一个返回值为int型的compara方法。
使用方法就是生成二叉树的时候,把这个类的对象放进去。



