Collection
方法:
Add(E)
Void clear();
Boolean contains(Object obbj) //判断是否包含某个对象 需要重写equals方法
Boolean remove(Object o) //删除集合中某个元素 需要重写equals方法
Object[] toArray() //集合转为数组 重写toString方法
迭代器
Iterator<E> integer()
Iterator接口
方法:
Boolean hasNext() //判断集合中有没下一个元素
Object next() //取出元素
并发修改异常
ConcurrentModificationException
迭代器在迭代过程中发现元素的个数和它之前开辟的个数不一样,它就不知道该如何迭代
Iterator<String> it=list.iterator();
Whie(it.hasNext){
String name=it.naxt;
If(name.equals(“小刘”)){
List.add(“小猪”);
}
}
解决:集合自己遍历集合自己修改,(普通for循环,不用迭代器)
结论: 当使用迭代器遍历时,如果集合修改内容则会发生并发修改异常
增强for循环
只能用来遍历
对普通for循环的简化
For(集合或数组中元素的类型变量:集合或数组的名字){
}
快捷键: fore+alt+/
内部原理:在遍历时也使用的迭代器,也有可能发生并发修改异常
使用:普通for 除了遍历也可对元素内容进行修改
增强for循环 只能遍历
泛型
泛型只能是引用类型 不能是基本类型 int——Integer
修饰类(泛型类)
声明:
声明类中有类型T不确定,泛型类的类型在创建对象时被确定
定义:
Class Demo<T>{
T value;
Public void method(T t);
}
确定:
如果创建对象时没有指定泛型的类型则泛型全是object
泛型类可以理解为模板类,以后用户在创建对象T指定是什么类型就是什么类型
Demo<T> d=new Demo<T>();
继承:
Class Zi<T> extends Demos<T>{ }如果子类没有确定父类泛型子类还是泛型类
Class Zi extends Demo<String>{ }如果子类已经确定了父类的泛型,所有子类都是普通类
一个类可以有一个或多个泛型
Class Demo<T,m>{
T value;
M value;
Public void method(T t);
}
继承:
Class Zi<T,M> extends Deom<T,M>{ }
Class Zi<T> extends Deom<T,String>{ }
Class Zi<M> extends Deom<int,M>{ }
修饰方法(泛型方法)
声明:
方法内传入的参数类型是泛型,则返回类型前加泛型<T>
Public static <T>void method(T t){ }
修饰接口(泛型接口)
接口中的参数类型不确定
Interface Inter<T>{
Public abstract void method(T t);
}
确定类型:
实现类确定泛型的类型
Class Demo implement Inter<String>{
Public void method(String s){
.....
}
}
Class Demo<T> implement Inter<T>{
Public void method<T t>{
.....
}
}