本专栏主要是记录学习完本专栏主要是记录学习Java中的知识点,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏
JavaWeb:🔥JavaWeb
Java入门篇: 🔥Java基础学习篇
Java进阶学习篇(持续更新中):🔑Java进阶学习篇
文章目录
- 一、前言
- 二、概述
- 1.List系列集合
- 2.Set系列集合
- 三、具体方法
- 1.添加
- 2.清空
- 3.删除
- 4.判断是否包含
- 5.判断是否为空
- 6.集合长度
- 四、具体实现
- 五、contains方法注意点
- 1.实例检验
- 2.原理
- 3.解决方法
- 六、结语
一、前言
从本文开始会讲述集合进阶的相关知识点,本文主要是讲述单列集合的顶层接口Collection
二、概述
Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的
1.List系列集合
添加的元素是有序、可重复、有索引
-
有序:输入的顺序与输出顺序
一致
-
可重复:集合内元素
可以相同
,不报错 -
有索引:可
通过索引获取
集合内元素
2.Set系列集合
添加的元素是无序、不重复、无索引
-
无序:输入的顺序与输出顺序
不一致
-
不重复:集合内元素不可以相同,否则报错
-
无索引:
不可通过索引获取
集合内元素
三、具体方法
1.添加
public boolean add(E,e)
2.清空
public void clear
3.删除
public boolean remove(E,e)
4.判断是否包含
这个方法比较特殊,在 底层源码中是依赖equals
方法判断 集合中是否存在某一个元素,所以 如果是自定义对象也想用该方法来判断是否包含的话,要在JavaBean中重写equals方法在下文中会具体介绍的
public boolean contains(Object obj)
5.判断是否为空
public boolean isEmpty()
6.集合长度
public int size()
四、具体实现
由于Collection是一个接口,所以我们不能直接创建它的对象,只能创建其实现类的对象(ArrayList
)来实现这几个方法,所以在下面的实例中我new了一个ArrayList的对象来演示这些方法
package TestCollection;
import java.util.ArrayList;
public class demo1 {
public static void main(String[] args) {
ArrayList list1 = new ArrayList();
//添加
list1.add("111");
list1.add("222");
list1.add("333");
System.out.println("list1:"+list1);
//删除
boolean b = list1.remove("111");
System.out.println("判断是否成功删除:"+b);
System.out.println("list1删除了111元素后的集合:"+list1);
//长度
int size = list1.size();
System.out.println("此时list1的长度是:"+size);
//判断是否包含
boolean contains = list1.contains("111");
System.out.println("list1是否包含元素111:"+contains);
//清空
list1.clear();
System.out.println("清空后的集合:"+list1);
//判断是否为空
boolean empty = list1.isEmpty();
System.out.println("此时list1是否为空:"+empty);
}
}
输出结果
list1:[111, 222, 333]
判断是否成功删除:true
list1删除了111元素后的集合:[222, 333]
此时list1的长度是:2
list1是否包含元素111:false
清空后的集合:[]
此时list1是否为空:true
五、contains方法注意点
1.实例检验
这里我们先创建一个Person
类,并定义成员属性为age
和name
,再new几个Person类的对象来检验contains方法
结果是false,与我们设想的不一样
2.原理
如果没有重写equals方法,则默认使用Object类中的equals方法进行判断,而Object类中的equals方法是依赖地址值判断的,所以new了一个对象后地址值改变,方法返回值为false
3.解决方法
在JavaBean中重写equals方法:快捷键Alt+Insert选择equals()和hashCode()
一路点击下一步即可一键生成,重写完了再执行以下刚刚的测试类结果就发生了改变
list2:[Person{name = 张三, age = 20}, Person{name = 李四, age = 21}, Person{name = 王五, age = 22}]
list2中是否包含姓名为张三,年龄为20的元素:true
六、结语
接下来会讲述迭代器相关知识,如果对文章内容有疑问可以直接评论留言