01 Collection体系
1.Collection是父接口,List和Set是子接口,用于实现父接口。接口不能被实例化,因为接口没有构造方法。
2.第三行和第四行的class就是这些接口的实现类。
02 Collection父接口
1.特点:代表一组任意类型的对象、无序、无下标、不能重复。
2.Collection父接口中的方法:
3.在API中学习集合的详细信息,具体的方法参数和返回值:
3.实例代码1
package com.collection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* Collection接口的使用
* (1)添加元素
* (2)删除元素
* (3)遍历元素
* (4)判断
*/
public class Demo01 {
public static void main(String[] args) {
//创建集合:接口不能被实例化,只能用接口的实现类来实例化
Collection c = new ArrayList();
//(1)添加元素
c.add("苹果");
c.add("西瓜");
c.add("榴莲");
System.out.println("元素个数为:" + c.size());
System.out.println(c);
//(2)删除元素
c.remove("榴莲");
System.out.println("元素个数为:" + c.size());
// c.clear(); //清空元素
// System.out.println(c);
//(3)遍历元素【重点】
//方法1:使用增强for循环。不能使用for,因为for需要下标,collection无下标
System.out.println("-------方法1 使用增强for---------");
for (Object o : c) {
System.out.println(o);
}
//方法2:使用迭代器(专门用来遍历集合的一种方式),包含三种方法:
/*
hasnext();有无下个元素
next();获取下个元素
remove();删除当前元素
*/
System.out.println("-------方法2 使用迭代器---------");
Iterator it = c.iterator(); //需要调用集合的iterator()方法,返回值为Iterator接口类型。
while (it.hasNext()) {
System.out.println(it.next());
}
/*
使用迭代器过程中(while循环里),不能用Collection的remove()方法删除元素。会出现并发错误异常。
在迭代后可以使用Collection的remove()方法删除元素;也可以使用迭代器的remove()删除当前元素
*/
it.remove();
System.out.println(c);
//(4)判断
System.out.println(c.contains("苹果"));
System.out.println(c.isEmpty());
}
}
4.实例代码2:新建一个Demo02和学生类
Student类:
package com.collection;
public class Student {
private String name;
private int age;
//添加构造方法 都是使用alt+enter快捷键
public Student() {
this.name = name;
this.age = age;
}
//添加get set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//重写toString方法
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
Demo02:
package com.collection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* Collection的使用:保存学生信息
*/
public class Demo02 {
public static void main(String[] args) {
//新建对象 多态:Collection类型的,实际是ArrayList类型的
Collection c = new ArrayList();
//new三个学生对象
Student s1 = new Student();
s1.setName("张三");
s1.setAge(20);
Student s2 = new Student();
s2.setName("李四");
s2.setAge(18);
Student s3 = new Student();
s3.setName("王五");
s3.setAge(22);
//1添加数据
c.add(s1);
c.add(s2);
c.add(s3);
System.out.println("元素个数:" + c.size());
System.out.println(c.toString()); //如果不重写toString方法,打印出是哈希值
//2删除
c.remove(s1);
// c.clear();
System.out.println("删除之后:" + c.toString());
//3遍历
//3.1 增强for
System.out.println("---------增强for---------");
for (Object o : c) {
System.out.println(o);
}
//3.2迭代器
System.out.println("---------迭代器---------");
Iterator it = c.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
//4判断
System.out.println(c.contains(s1));
System.out.println(c.isEmpty());
}
}