01集合结构体系
:集合体系结构
- 集合分两大类:
- Collection:单列集合,一次放入一个数据
- Map:双列集合,一次放入一对数据
一、集合分两大类
- Collection:单列集合,每次添加一个数据。
- Map:双列集合,每次添加一对数据。
二、单列集合
-
集合体系结构图:
-
List系列集合:添加的元素是:有序、可重复、有索引。
- 有序:存和取的顺序的是一样的。
- 可重复:表示集合中存取的元素是可以重复的。
- 有索引:我们可以通过索引去获取集合里面的每一个元素。
-
Set系列集合:添加的元素是:无序、不重复、无索引。
- 无序:存和取的顺序有可能是不一样的。
- 不重复:集合中不能存储重复的数据(可以利用这个特性进行数据的去重)。
- 无索引:指的是我们不能通过集合去获取Set系列里面的元素。
三、Collection
-
Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的。
方法名称 说明 public boolean add(E e) 把给定对象添加到当前集合中 public void clear() 清空集合中所有的元素 public boolean remove(E e) 把给定的对象在当前集合中删除 public boolean contains(Object obj) 判断当前集合中是否包含给定的对象 public boolean isEmpty() 判断当前集合是否为空 public int size() 返回集合中元素的个数/集合的长度 案例:
package com.mycollection; import java.util.ArrayList; import java.util.Collection; public class A01_CollectionDemo1 { public static void main(String[] args) { /* 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); //3.删除 //细节1:因为collection里面定义的是共性的方法,所以此时不能通过索引进行删除。只能通过元素的对象进行删除。 //细节2:方法会有一个布尔类型的返回值,删除成功返回true,删除失败返回false。 //如果要删除的元素不存在,就会删除失败。 coll.remove("aaa"); System.out.println(coll); //4.判断元素是否包含 //细节:底层是依赖equals方法进行判断是否存在的。 //所以,如果集合中存储的是自定义对象,也想通过contains方法来判断是否包含,那么在javabean类中,一定要重写equals方法。 boolean result = coll.contains("bbb"); System.out.println(result); //2.清空 coll.clear(); System.out.println(coll); } }
运行结果:
案例二:
package com.mycollection;
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;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return age
*/
public int getAge() {
return age;
}
/**
* 设置
* @param age
*/
public void setAge(int age) {
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true; //this是当前对象的引用
if (o == null || getClass() != o.getClass()) return false;//当前对象里面的getClass和o对象里面的getClass
Student student = (Student) o;
return age == student.age && Objects.equals(name, student.name);//equals方法通常用于比较两个对象的内容是否相同
}
public String toString() {
return "Student{name = " + name + ", age = " + age + "}";
}
}
测试类:
package com.mycollection;
import java.util.ArrayList;
import java.util.Collection;
public class A02_CollectionDemo2 {
public static void main(String[] args) {
//1.创建集合的对象
Collection<Student> coll = new ArrayList<>();
//2.创建三个学生对象
Student s1 = new Student("zhangsan",23);
Student s2 = new Student("leisi",22);
Student s3 = new Student("wangwu",25);
//3.把学生对象添加到集合当中
coll.add(s1);
coll.add(s2);
coll.add(s3);
//4.判断某一个学生对象是否包含。
Student s4 = new Student("zhangsan",23);
//如果同姓名和同年龄,就认为是同一个学生。
//因为contains在底层依赖equals方法判断对象是否一致的。
//如果存的是自定义对象,没有重写equals方法,那么默认使用Object类中的equals方法进行判断,而Object类中的方法,依赖地址值进行判断。
//需求是:同姓名和同年龄,就认为是同一个学生。
//所以,需要在javabean类中,重写equals方法就可以了。
System.out.println(coll.contains(s4));
//5.判断集合是否为空
boolean result2 = coll.isEmpty();
System.out.println(result2);
//6.获取集合的长度
int size = coll.size();
System.out.println("集合的长度为:"+size);
}
}
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器