java.util.Collection 集合层次的根接口
常用实现类
ArrayList
方法
- public boolean add(E e): 把给定的对象添加到当前集合中 。
- public void clear() :清空集合中所有的元素。
- public boolean remove(E e): 把给定的对象在当前集合中删除。
- public boolean contains(Object obj): 判断当前集合中是否包含给定的对象。
- public boolean isEmpty(): 判断当前集合是否为空。
- public int size(): 返回集合中元素的个数。
- public Object[] toArray(): 把集合中的元素,存储到数组中
//多态创建对象 不能使用实现类特有功能
Collection<String> c = new ArrayList<>();
c.add("柳岩");
集合和迭代器
Collection
public abstract Iterator<E> iterator()
获取迭代器 方法是抽象方法 但是任意一个Collection的实现类都会
重写此方法 方法的返回值类型是Iterator接口 一定会返回接口的实现类对象
Iterator接口
boolean hasNext() 判断是否有元素
E next() 获取元素
//获取集合专属迭代器
Iterator<String> it = c.iterator();
ConcurrentModificationException
并发修改异常
当迭代器在迭代的同时 集合修改了自身的长度 就会抛出此异常
while(it.hasNext()){
String name = it.next();
System.out.println(name);
}
增强For循环
JDK1.5
作用
用来遍历数组 或 集合
原理
一个增强for循环 底层使用的就是一个迭
代器
注意:迭代的同时 不能修改集合的长度
格式
for(数据类型 变量名:集合或数组){
}
//增强for
for(Person thisPerson : list){
System.out.println(thisPerson.getName()+" "+thisPerson.getAge());
//增强for循环
for(int num : arr){
System.out.println(num);
}
泛型
定义泛型
泛型可以定义在 接口 类 方法上 将数据类型作为参数传递
泛型类
public class 类名<泛型变量>{
}
创建对象时 确定泛型的数据类型
public class MyClass<QQ> {
private QQ name;
泛型方法
public <泛型变量>返回值类型 方法名(形参){
}
调用方法 传递参数时 确定泛型的数据类型
public <WX>void method(WX wx,QQ qq){
System.out.println(wx.getClass());
System.out.println(qq.getClass());
}
//调用方法确定wx的类型为Integer
mc.method(10,"");
//调用方法确定wx的类型为String
mc.method("","");
泛型接口
public interface 接口名<泛型变量>
1.定义实现类时 直接确定泛型的数据类型
2.定义实现类时 不确定泛型的数据类型 实现类也是泛型类 创建实现类对象时 确定类型
public interface MyInterface<K,V> {
public abstract void method(K key,V value);
}
public interface MyInterface<Integer,String>
泛型的通配符
?
//定义一个方法 可以遍历这两个集合
public static void show(ArrayList<?> list){
for(Object obj : list){
System.out.println(obj);
好处
可以预先使用未知的类型
使用泛型
我们创建集合 指定集合中元素的类型 就是在使用泛型
使用泛型的好处
1.明确知道集合中存储元素的类型
2.将运行时异常 提前到编译时报错
3.避免强制类型转换的麻烦
list接口
特点
有序 有索引 元素可重复
判断元素相同的依据是对象的equals方法
方法
- public void add(int index, E element): 将指定的元素,添加到该集合中的指定位置上。
- public E get(int index):返回集合中指定位置的元素。
- public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。
- public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。
常用的实现类
ArrayList
底层数据结构是数组
查询快 增删慢
LinkedList
底层数据结构是链表
查询慢 增删快
2.都重要,需要着重记住
3.充实,开心
4.Colections,ArrayList,Set<>,总结