版权声明: https://blog.csdn.net/qq_40905403/article/details/83626185
Collection
- 集合中的顶级接口,定义了一些操作集合的方法
- 子接口:List Set
- 常用API
- add(Object o) 向集合中添加元素
- size() 集合的元素个数
- isEmpty() 判断集合是否为空
- clear() 清空集合
- contains(Object o) 判断集合中有无对象o
- remove(Object o) 删除集合中的元素
- 存储引用类型时,存储的是引用类型的地址
- addAll(Collection c) 并集,将给定集合中的所有元素添加到当前集合中
- contaisAll(Collection c)判断当前集合是否包含给定集合中的所有元素
- removeAll(Collection c) 删除交集,将当前集合中与给定集合共有元素删除
List
**特点:**线性表,有序可重复(两个对象用equals比较为true)
常用实现类:
- ArrayList 数组实现,查询更快
- LinkedList 链表实现,增删更快,首尾增删元素性能最好
注意: 对性能要求不是很苛刻时,通常用ArrayList
常用API
- get(int index)获取指定位置处所对应的元素
- set(int index,Object o) 实现替换功能
- add(int index, Object o) 提供了重载方法 将给定元素插入到指定位置
- addAll(int index,Collection c) 提供了重载方法,将给定集合插入到指定位置
- remove(int index) 提供了重载方法 将当前集合中指定位置的元素删除并将其返回
Iterator 迭代器
- 接口 定义了用于遍历集合的相关方法
- 不同的集合都实现了一个用于遍历自身的迭代器的实现类
- 使用迭代器的3个步骤 问 取 删(删不是必要的)
- 获取迭代器 Iterator it = c.iterator();
- 问: it.hasNext()
- 取: (String)it.next()
- 删: it.remove() 规定: 迭代器要求在遍历的过程中不能通过集合的方法增删元素否则会抛出异常;迭代器自身提供的remove方法删除的是通过next方法取出的元素
Iterator it = c.iterator();
while(it.hasNext()){ //问
String str = (String)it.next(); //取
it.remove(str); //删
}
增强for循环(编译器认可)
- jdk1.5后推出
- 不取代传统for循环
- 用于遍历集合或数组
- 遍历数组
String[] array = {"one","two","three","four","five"};
/*
* 新循环并非JVM认可,而是编译器在编译期将使用新循环
* 遍历数组改变为传统for循环遍历数组.
*/
for(String str : array){
System.out.println(str);
}
- 遍历集合,不能用集合的删除方法
/*
* 新循环遍历集合就是迭代器遍历,编译器会在
* 编译期间将其改为迭代器遍历,所以不要在新
* 循环遍历集合的过程中使用集合方法增删元素
*/
泛型(编译器认可)
- jdk1.5之后推出
- 常用在集合中,用于约定集合中的元素类型
- 泛型的原型是Object,不指定实际类型时,默认Object类型
- 指定泛型后,集合就只能存储这一类型
- 迭代器支持泛型
- 获取元素的时候不用转换类型了
- 常见面试题 泛型角度问题