一.关于Collection接口的继续关系图
Collection接口有两个重要的子接口:List,Set。
List接口的三个重要的实现类:LinkedList,ArrayList,Vector
Set接口两个重要的实现类:HashSet,TreeSet
二.Collection接口的实现类的特点
1.Collection实现类,可以存放多个元素,每个元素可以是Object或子类
2.有些Collection实现类,可以存放重复的元素,有些不可以
3.有些Collection实现类,有些是有序的(List),有些是无序的(Set)
4.Collection接口没有直接实现类,是通过它的子接口Set和List来实现的
三.Collection接口的常用方法
由于Collection接口无法实例化,要想使用Collection接口的方法我们就用Collection的实现子类ArrayList来演示它的常用方法
1.add:添加单个元素(内里存的是一个个对象,并不是根本数据类型,底层会自动装箱。而且添加乐成返回true,添加失败返回false)
public static void main(String[] args) { Collection collection = new ArrayList<>(); //add方法的使用 boolean b = collection.add("jack"); System.out.println(b);//输出结果:true collection.add(10); collection.add(true); System.out.println("List="+collection);//输出结果:List=[jack, 10, true] }2.remove:删除指定元素(如果按元素删除返回值就是boolean类型即删除乐成就放回true,删除失败就放回false。如果按照索引删除返回值就是删除的元素)
public static void main(String[] args) { List list = new ArrayList<>(); list.add("jack"); list.add(10); list.add(true); //remove:方法的使用 //按照索引删除(索引不存在就报错) Object o = list.remove(1); System.out.println(o); //输出结果:10 //按照元素删除 boolean b = list.remove(true); System.out.println(b);//输出结果:true System.out.println("List="+list);//输出结果:List=[jack] }3.contains:查找元素是否存在(返回类型是boolean类型:如果元素存在就返回true,不存在就返回false)
public static void main(String[] args) { List list = new ArrayList<>(); list.add("jack"); list.add(10); list.add(true); //contains:方法的使用 boolean b = list.contains("jack"); System.out.println(b);//输出结果:true }4.size:获取元素的个数
public static void main(String[] args) { List list = new ArrayList<>(); list.add("jack"); list.add(10); list.add(true); //size:方法的使用 int s = list.size(); System.out.println(s);//输出结果:3 }5.isEmpty:判断此聚集是否为空(如果此聚集为空返回true,不为空返回false)
public static void main(String[] args) { List list = new ArrayList<>(); list.add("jack"); list.add(10); list.add(true); //isEmpty:方法的使用 boolean b = list.isEmpty(); System.out.println(b);//输出结果:false }6.clear:清空聚集
public static void main(String[] args) { List list = new ArrayList<>(); list.add("jack"); list.add(10); list.add(true); //clear:清空聚集 list.clear(); System.out.println("List="+list);//输出结果:List=[] }7.addAll:添加多个元素(添加乐成返回true,添加失败返回false。只要是实现Collection接口的子类都可以传入addAll方法中)
public static void main(String[] args) { List list = new ArrayList<>(); list.add("jack"); list.add(10); list.add(true); //addAll:方法的使用 List newList = new ArrayList<>(); newList.add("西游记"); newList.add("三国演绎"); boolean b = list.addAll(newList); System.out.println(b);//输出结果:true System.out.println("list="+list);//输出结果:list=[jack, 10, true, 西游记, 三国演绎] }8.containsAll:查找多个元素是否存在(如果元素多存在就返回true,否则返回false。只要是实现Collection接口的子类都可以传入containsAll方法中)
public static void main(String[] args) { List list = new ArrayList<>(); list.add("jack"); list.add(10); list.add(true); //containsAll:方法的使用 List newList = new ArrayList<>(); newList.add("jack"); newList.add(10); boolean b = list.containsAll(newList); System.out.println(b);//输出结果:true }9.removeAll:删除多个元素(如果删除乐成就返回true,否则就返回false。只要是实现Collection接口的子类都可以传入removeAll方法中)
public static void main(String[] args) { List list = new ArrayList<>(); list.add("jack"); list.add(10); list.add(true); //removeAll:方法的使用 List newList = new ArrayList<>(); newList.add("jack"); newList.add(true); boolean b = list.removeAll(newList); System.out.println(b); System.out.println("list="+list); }四.Collection接口遍历元素的方式
1.使用迭代器遍历(Iterator)
- 迭代器的根本先容
1).Iterator对象称为迭代器,重要用于遍历Collection聚集中的元素
2).全部实现Collection接口的的聚集类都有一个iterator()方法,用以返回一个实现Iterator接口
的对象,即可以返回一个迭代器
3).Iterator仅用于遍历聚集,Iterator自己并不存放对象
- 迭代器的实行原理
1).通过Collection接口实现类的iterator()方法得到一聚集的迭代器(Iterator)
Iterator iterator = list.iterator();2).通过迭代器(Iterator)里的hasNext()方法判断聚集是否有下一个元素,如果有返回true,否则返回false
while (iterator.hasNext()){ System.out.println(iterator.next()); }3).通过迭代器(Iterator)里的next()方法返回指针下移后聚集位置上的元素(next()方法作用是指针下移而且返回下移后聚集位置上的元素)
4).原理图
5).代码演示
public static void main(String[] args) { List list = new ArrayList<>(); list.add("jack"); list.add(10); list.add(true); //使用迭代器遍历聚集 //1.先得到list聚集的迭代器(Iterator) Iterator iterator = list.iterator(); //2.使用while循环遍历 while (iterator.hasNext()){ //3.返回下一个元素 Object o = iterator.next(); System.out.println(o);//遍历完终极输出结果为:jack 10 true } }2.使用加强for循环
加强for循环可以代替Iteratro迭代器。
1).根本语法
for(元素类型 元素名:聚集名或数组名){ 访问元素}2).代码演示
public static void main(String[] args) { List list = new ArrayList<>(); list.add("jack"); list.add(10); list.add(true); //使用加强for循环遍历聚集 for (Object o : list) { System.out.println(o); } }3).特点:曾强for循环就是简化版的Iterator迭代器,本质一样,只能用于遍历聚集或数组(上述代码举行Debug)
参考干系视频(韩顺平老师) |