集合
集合和数组的区别:
1.数组长度固定,集合长度不固定
2.数组可存放基础数据类型和引用数据类型,集合只能存放引用数据类型
ArrayList LinkedList
1.有序集合
2.可以存储重复元素
3.有索引
HashSet
1.无序集合
2.不可以存储重复元素
3.没有索引
LinkedHashSet
1.有序集合
2.不可以存储重复元素
3.没有索引
共性方法
-
add(E e)
把给定对象添加至集合
-
remove(E e)
给定对象在当前对象中删除,若集合中没有该元素,返回false,若有一个删除,若有多个,删除第一个该元素
-
contains(E e)
查询该元素是否存在于当前集合
-
toArray()
将当前集合放置数组中
-
isEmpty()
判断当前集合是否为空
-
clear()
清空当前集合的对象
-
size()
返回当前集合的存储元素的个数
迭代器
判断集合是否为空,若不为空,则取出元素,再继续判断。
迭代器是一个接口,需要找其实现类。
在Collection中有iterator()方法,接收它即可。
成员方法
hasNext() 判断集合中是否还有元素
next() 取出集合中下一个元素
使用方法
1.创建集合,往集合中添加对象
2.使用方法获取迭代器对象
3.使用迭代器中的方法依次取出元素
Collection<String> collection = new ArrayList<>();
collection.add("aaa");
collection.add("bbb");
collection.add("ccc");
Iterator<String> iterator = collection.iterator();//每次使用时都要重新获取一下迭代器,不然会抛出ConcurrentModificationException异常
String s = iterator.next();
System.out.println(s);
在使用迭代器遍历集合时,若同时增加和删除迭代器,则会引发并发修改异常。
在迭代过程中,不要对集合进行修改
若要修改,则使用ListIterator接口,它定义了add和remove对集合进行修改。
泛型
未知的数据类型,可存储任意的数据类型,但不可使用元素特有的数据类型
含有泛型的方法
修饰符 <泛型> 返回值 方法名(参数列表){}
含有泛型的接口
public interfa 接口名
{ public abstract void show(I i);}
使用方法:
1.implements 接口名<类型>
2.public 方法名 implements 接口名
泛型的通配符
?代表任意数据类型,不能创建对象时使用,可作为方法的参数使用。
泛型的上限与下限
上限:<? extends A> 该类型必须是A,或者A的子类
下限:<? super A> 该类型必须是A,或者A的父类