集合
集合相当于是个容器,主要负责存储任意数量的数据。
分类:
Collection(接口) - 有很多子接口/实现类
| - List(I)
| - Set(I)
| - Queue(I)
Map(接口)
Collection接口
1、创建: 是一个接口,不能new自己,只能new接口的实现类。
2、常用API
1)普通常用
add() - 添加
remove() -删除
clear() - 清空
isEmpty() - 询问是否为空
contains() - 询问是否包含
size() - 获得集合的长度
2)集合与集合之间的方法 c1 和 c2两个集合
addAll() - 将c2中所有的元素添加到c1中
removeAll() - 将c2中出现过的元素从c1中删除
containsAll() - 问c2中是否包含c1中的所有元素
3)集合与数组之间的方法
集合 -> 数组
toArray() - 得到的返回值永远只能是Object类型
toArray(T<> []) - T表示数组需要的类型,并且跟数组的长度无关
数组 -> 集合
Arrays.asList()
得到的是一个集合,但是使用上得到ArrayList是一个Array类中的内部类
所以不能使用让给长度会修改的方法,例如: add()。
3、注意:
collection没有get(),想要获取元素,必须使用Iterator迭代器获取,使用迭代器的前提是这个接口必须是可迭代的。
Iterable接口
是一个超级接口
1.此接口中只要一个方法 - iterator
2.iterator 的返回值类型是 Iterator也是一个接口
Iterator接口中有三个方法:
next() - 移动到下一个
hashNext() - 询问有没有下一个
remove() - 删除元素
注意:如果迭代删除每一个元素,必须使用迭代器中的remove(),否则会出现异常。
异常:ConcurrentModificationException - 并发修改异常
解决: 不能调用集合中的remove(),只能使用迭代器中自己的remove()。
remove() 删除的是迭代器中游标所在位置上的元素。
3.froEach - 简易版迭代器
1)作用: 获得数组/集合中所有的元素
2)结构:
for(对象 : 集合){}
:前 -> 每取出来的一个对象
相当于迭代器中的 it.next()
:后 -> 要遍历的集合
使用简易版迭代器,不能删除元素。
泛型<E>
1、特点
a.规定了泛型,就只支持定义好的类型参数,只是在编译时有效,只是用来规范程序员写法的。
b.运行时状态下,是支持所有类型,支持Object。
c.将类型作为参数使用,也就是说泛型可以放在所有存放类型的地方(方法参数/返回值类型/类)。
2、使用泛型的步骤
1.在类中定义泛型的类型
在类名后添加 <E> - 字母随意
2.在类中的方法中,具体类型就可以使用E来代替
3、泛型的作用
为了优化方法的重载。
JavaBean规范:实体类的书写规范
1、所有成员变量私有化,并且提供一对get()/set()
2、定义无参构造方法
3、重写toString()
4、重写equals() 和 hashCode()
5、所有基本数据类型建议使用包装类