JAVA之Collection容器

本文深入探讨Java集合框架的核心概念,包括Collection接口及其子接口Set和List的实现类,如HashSet、ArrayList、LinkedList。解析equals和hashCode方法的重要性,尤其是在自定义类作为容器元素时的重写策略。阐述Iterator迭代器与增强for循环的区别,以及Set接口的特点和操作方法,如retainAll求交集和addAll添加元素并去重。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Collection接口:

1.所定义的方法:

 

因此对于Colletion的子接口Set和List的实现类:HashSet、 ArrayList、LinkedList都实现了这些方法。

2.关于equals和hashCode方法的使用: 

在什么情况下需要重写equals和hashCode方法呢?

(1)容器中放的是自定义类的对象,且该类作为索引或key。

(2)需要使用到remove、contains方法或容器是Map接口的实现类。

如何重写?

(1)该自定义类需要重写equals和hashCode方法。方法前标注为@Override

(2)一般是对对象的成员属性进行比较判断

3.关于Iterator迭代器及增强的for循环

Collection中的Iterator()方法返回一个Iterator迭代器,优点是可以进行安全的remove操作,不会引起线程安全问题

增强的for循环不可进行remove操作,也不能获取当前循环index下标。并不推荐使用,除非仅仅需要简单便利集合并读出其中内容

4.关于Set

特点:无序 、元素不可重复 。因此在add方法执行时,存在equals方法为true的元素,则无法加入到Set中。因此需要重写要使用set的对象所对应类的equals方法

retainAll():求交集,这个方法可以用于求两个集合中相同的元素

addAll():将一个set加入到另一个set中,并去除重复元素。

这里看一个例子,说明元素重复的问题:

这里的Name类的equals方法已经重写了,所有成员变量的值都相等才为true,而String类本身就重写了Object的equals方法,比较字符序列,而不是引用值,因此"hello"和new Name("f1","f2")这两个元素不能被重复加入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值