一、Collection集合
1. Collection集合介绍
Collection:单列集合(接口)
List:(接口)
特点:
1.有索引
2.可以重复
3.有序(添加的顺序和获取的顺序一致)
实现类:
ArrayList(底层实现是数组)
LinkedList(底层实现是链表)
Vector
Set:(接口)
特点:
1.没有索引
2.不能重复
实现类:
TreeSet 3.无序
HashSet 3.无序(添加顺序和获取顺序不一定一致)
LinkedHashSet 3.有有序
学习:
学习顶层,使用底层。
- Collection集合的常用方法
boolean add(E e);//新增
boolean isEmpty();//是否为空
boolean contains(Object obj);//是否包含
boolean remove(Object obj);//删除
void clear();//清除
int size()//长度
Object[] toArray();//转换为数组
二、Iterator迭代器
- Iterator接口介绍
1.获取迭代器对象
Iterator i = 集合对象.iterator();
2.判断是否有下一个元素
i.hasNext();
3.获取元素
i.next(); - 用Iterator迭代器遍历集合的代码实现
- Iterator迭代器使用的注意事项
用迭代器遍历Collection集合的时候,不能通过集合对象 对集合进行增删操作。
如果要删除通过迭代器删除
三、增强for循环
- 增强for循环的使用介绍
增强for循环的底层就是迭代器。
可以遍历集合、数组
格式:
for(数组的数据类型/集合的泛型 变量名:要遍历的集合/数组){
sout(变量名);
}
四、泛型
- 泛型的概念和好处
泛型是未知的数据类型。 - 定义和使用含有泛型的类
public class 类名{
//可以是成员变量的类型
E 变量名;
//可以是成员方法的参数类型
public E 方法名(E e){}
}
什么时候确定泛型的类型:创建对象的时候确定泛型的类型,
如果创建对象的时候,没有确定,那么默认泛型是Object类型
类名 对象名 = new 类名();
- 定义和使用含有泛型的方法
单独的某一个方法中使用泛型:
修饰符 返回值 方法名(E e){
}
修饰符 static 返回值 方法名(E e){
} - 定义和使用含有泛型的接口
public interface Inter{}
使用方式一:
public class 类名 implements Inter{
}
使用方式二:
public class 类名 implements Inter{}
类名 对象名 = new 类名<>();
5. 泛型通配符
通配符:?
作为方法的参数: ArrayList<?> list 或者 ArrayList list
作为方法的返回值:ArrayList<?> list 或者 ArrayList list
上限限定泛型的写法: ? extends E //可以是E类型或者是E类型的子类类型
下限限定泛型的写法: ? super E //可以是E类型或者是E类型的父类类型