Collection(接口,集合所有单列集合的父类)
成员方法
* boolean add(E e) 添加元素
* boolean remove(Object o) 删除指定的元素
* void clear() 清空集合
* int size() 获得集合元素的个数
迭代器(专门用来遍历集合的对象)
调用集合对象的Iterator<E> iterator() 方法获得
好处
屏蔽的众多集合的内部实现,对外提供统一的遍历方式。
可以用来遍历任何的单列集合。
常用方法
* boolean hasNext()
* 判断当前指针指向的位置是否有元素
* 如果有,返回true,返回false。
* E next()
* 先获得当前指针指向位置的元素
* 然后再将指针下移指向下一个位置的元素。
迭代器使用注意事项
* 如果集合中已经没有元素可迭代,仍然调用next方法,会抛出以下异常:
* java.util.NoSuchElementException:没有元素异常。
并发修改异常概述和解决方案
需求:迭代自定义对象,在使用迭代器迭代集合的过程,当满足某个添加时,需要往集合中增删元素.
并发修改异常原因
* 在使用迭代器遍历集合的过程中,调用了集合的add,clear方法增删了集合的元素。这是不允许的操作。
* java.util.ConcurrentModificationException
如何解决并发修改异常的问题
* 使用Iterator迭代器遍历,使用普通for循环(带索引的for循环)
* 使用ListIterator迭代遍历。ListIterator是Iterator子类。
Listlterator it=new Listlterator();
fot循环里修改用这个:it.add();
增强for(1.5新特性,用来遍历集合和数组本质就是迭代器)
---for(数据类型 变量名: 集合名或数组名){
}
泛型(1.5新特性,<>)---java中的泛型是伪泛型,编译后字节码文件没有,反射验证
--好处:可以将运行时错误转换为编译时错误。
* 省去数据类型转换的麻烦。
看=号左边!
方法,类,接口都可以用泛型
<T> T
泛型上下限(了解)
泛型的上下限
? super Integer (自己) 泛型下限 只能接受Integer或Integer的父类类型。(从下往上找)
? extends Number(父类):泛型上限,只能接受Number 或 Number子类类型。(从上往下找)
/*求任意类型的和返回到是double*/
public static void main(String[] args) {
//System.out.println(getSum(13.2,5645646545L));
System.out.println(getSum(13.2,368));
}
public static <T extends Number> double getSum(T t1,T t2){
return t1.doubleValue() + t2.doubleValue();
}
}