本帖最后由 IT人才 于 2018-11-20 17:14 编辑
Collection集合
集合框架介绍
目标
1会使用集合存储数据
2会遍历集合,把数据取出来
3掌握每种集合特性
C:/Users/Administrator/AppData/Local/YNote/data/qqABF3AFC7E7EB3E0C2825A19D8E6A47E1/ad0e99c73d2e4da1b38fad159b1a4239/clipboard.png
今日API
java.util.Collection<E>接口:
// 成员方法(子类都会实现)
boolean?add(E?e): 把给定的对象添加到当前集合中
void?clear(): 清空集合中所有的元素
boolean?remove(E?e): 把给定的对象在当前集合中删除
boolean?contains(E?e): 判断当前集合中是否包含给定的对象
boolean?isEmpty(): 判断当前集合是否为空(没有元素)
int?size(): 返回集合中元素的个数
Object[]?toArray(): 把集合中的元素,存储到数组中
Iterator<E> iterator(): 获取集合的迭代器对象
java.util.Iterator<E>接口: 迭代器
// 成员方法
boolean hasNext(): 判断是否有下一个元素
E next(): 获取下一个元素
void remove(): 删除调用完next()指向的元素
java.util.Collections工具类
// 静态方法
static void shuffle(List<?> list): 随机打乱集合中元素的顺序
Collection接口方法
boolean a=对象名.add() 添加元素
返回值true
boolean a=对象名.remove() 删除元素
集合中存在该元素 返回true
集合中不存在该元素 返回false
集合中有相同元素 只会删除第一个
boolean a=对象名.contains() 判断集合是否包含给定的对象
包含返回true
不包含返回false
boolean a=对象名.isEmpty() 判断当前集合是否为空
集合为空返回true
集合不为空返回false
对象名.size() 返回集合中的元素 个数
object[] arr=对象名.toArray 把集合中的元素存储到数组中
对象名.clear() 清空集合中所有元素
迭代器
Iterator<E>接口 通用的取出方式
对集合进行遍历
有两个常用方法
1.boolean hasNext()判断是否达到集合末尾,是返回false
2.E next()取出集合中的元素
迭代器使用步骤
1.使用集合中的iterator() 获取迭代器对象 Iterator<E> iterator():获取集合的迭代器对象
Iterator<E> 迭代器对象名= 集合对象.iterator();//固定写法
其中迭代器泛型E和集合泛型一致
2.使用 Iterator接口中的方法hasNext判断是否到达了集合末尾
boolean b=迭代器对象名.haxNext();
3.使用 Iterator接口中的方法next取出集合中的元素
迭代器对象名.next();
使用迭代器取出集合中元素是一个重复的过程
利用while循环优化
while(迭代器对象名.hasNext){
String a=迭代器对象名.next();
sou()
}
迭代器的并发修改异常
在使用迭代器的过程中,修改了集合的长度(删除,添加元素),就会抛出并发修改异常.
解决办法:
1.在迭代的过程中不修改集合长度
2.了解就不了解了.
增强for循环
底层使用的也是迭代器,使用for循环的格式,简化了迭代器的书写
Collection<E>接口 extends Iterable<E>接口
增强for循环:
用来遍历数组/集合
格式:
for(集合/数组中元素的数据类型 变量名 : 集合名/数组名){
sout(变量名);
}
泛型 (广泛未知的类型)
泛型的概述:
泛型可以看做是一个变量
泛型的使用:
集合不使用泛型默认object类型
好处:
1.避免类型转换的麻烦,存储数据什么类型,取出就是什么类型
2.把运行期异常,提升到了编译期
定义和使用含有泛型的方法
修饰符 <泛型> 返回值类型 方法名(参数列表(使用泛型)){
方法体
}
含有泛型的接口
C:/Users/Administrator/AppData/Local/YNote/data/qqABF3AFC7E7EB3E0C2825A19D8E6A47E1/472f122dd23c478db49d4ad10fc02599/clipboard.png
泛型通配符
?:代表任意的数据类型
使用方式:
只能作为方法的参数使用
泛型的限定:
C:/Users/Administrator/AppData/Local/YNote/data/qqABF3AFC7E7EB3E0C2825A19D8E6A47E1/58f999b5ee544b96b949825124c82080/clipboard.png
|
|