集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变
包含:
- Collection
- List(元素可重复,储存和取出的元素顺序一致)
- Set(元素不可重复)
- 泛型
- Map
- Collections
①Collection集合概述
- 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素
- JDK不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现
创建Collection集合的对象
- 多态的方式
- 具体的实现类ArrayList
常用方法
boolean add(E e) | 添加元素 |
boolean remove (Object o) | 从集合中移除指定的元素 |
void clear() | 清空集合中的元素 |
boolean contains (Object o) | 判断集合中是否存在指定的元素 |
boolean isEmpty() | 判断集合中是否存在指定的元素 |
int size() | 集合的长度,也就是集合中元素的个数 |
import java.util.ArrayList;
import java.util.Collection;
public class CollectionDemo1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
public boolean add(E e) 添加
public void clear() 清空
public boolean remove(E,e) 删除
public boolean contains(Object obj) 判断是否包含
public boolean isEmpty() 判断是否为空
public int size() 集合长度
注意点:
Collection是一个接口,我们不能直接创建它的对象
所以,现在我们学习他的该方法时,只能创建它实现类的对象。
实现类:ArrayList
//目的:为了学习Collection里面的方法
自己在做练习的时候,还是按照之前的方式去创建对象
*/
Collection<String> coll=new ArrayList<>();
//1.添加元素:
//细节1:如果我们要往List系列集合中添加数据,那么方法永远返回true,因为List系列是允许重复的
//细节2:如果我们要往Set系列集合中添加数据, 如果当前要添加的元素不存在,方法返回true,表示添加成功
// 如果当前要添加的元素存在,方法返回false,表示添加失败
// 因为Set系列不允许重复
coll.add("aaa");
coll.add("bbb");
coll.add("ccc");
System.out.println(coll);
//2.清空
//coll.clear();
//System.out.println(coll);
//3.删除
//细节1:因为Collection里面定义的是共性的方法,所以此时不能通过索引进行删除,只能通过元素的对象进行删除
//细节2:方法会有一个布尔类型的返回值,删除成功返回true,栓出失败返回false
//如果要删除的元素不存在,就会删除失败
System.out.println(coll.remove("aaa"));
System.out.println(coll);
//4.删除元素是否包含
//细节:底层是依赖equals方法来判断是否存在的
//所以,如果集合中存储的是自定义对象,也想通过contains方法来进行判断,那么在javaBean类中,一定要重写equals方法
boolean result1=coll.contains("bbb");
System.out.println(result1);
//5.判断集合是否为空
boolean result2=coll.isEmpty();
System.out.println(result2);
//6.获取集合的长度
int size=coll.size();
coll.add("eee");
System.out.println(size);
}
}
以下代码是用来介绍在定义的javaBean类中,重写equals方法以及演示
import java.util.Objects;
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name,int age) {
this.name=name;
this.age=age;
}
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;
}
public boolean equals(Object o) {
if(this==o) return true;
if(o==null || getClass()!=o.getClass()) return false;
Student student=(Student) o;
return age==student.age && Objects.equals(name, student.name);
}
public String toString() {
return "Student{name="+name+",age="+age+"}";
}
}
import java.util.ArrayList;
import java.util.Collection;
public class CollectionDemo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Collection<Student> coll=new ArrayList<>();
//创建三个学生对象
Student s1=new Student("zhangsan",23);
Student s2=new Student("lisi",23);
Student s3=new Student("wangwu",23);
//把学生对像添加到集合当中
coll.add(s1);
coll.add(s2);
coll.add(s3);
//判断集合中某一对象是否包含
Student s4=new Student("zhangsan",23);
//因为contains底层是依赖equals方法来判断是否存在的
//如果存的是自定义对象,没有重写equals方法,那么默认使用Object类中的方法进行判断,而Object类中equals方法依赖地址值进行判断
//需求:如果同姓名同年龄,就认为是同一个学生
//所以,需要在定义的javaBean类中,重写equals方法就可以了。
System.out.println(coll.contains(s4));
}
}