案例
双十一过后,某公司每天都能收到很多快递,门卫小张想要统计收到快递的人员名单,以便统一通知,现请你帮他编写一段Java程序,统计出需要取快递的人员名单。
可以通过循环一个一个录入有快递的人员姓名,并添加到集合中,由于集合有去重功能,这样最后得到的就是一个不重复的人员名单。
分析
由题意可知,遇到这种需要录入人员姓名,并且要查看的简单程序,可以用数组,也可以使用集合~
1.选择集合类型
但是,提到去重功能,就得看咱们的集合了,集合又分为了以下几种
其中List集合是有序可重复类型,而Set集合是无序不可重复类型,所以这次结合实际需求当然要选Set集合啦!
所以,我们创建了一个HashSet集合,这时候肯定有小迷糊问:为什么不用TreeSet呢?
TreeSet内部其实是按照平衡二叉树的算法对数进行排序,记住是数!大于该数的放在右子树,小于该数的放在左子树……但是,等等!
我们要解决的是录入人员姓名的问题,人员姓名总不不是数字吧,不然细思极恐“嗨,001,我是002……”
有这会功夫去编码,excel统计表格都做好了,所以综上所述,我们在一堆集合里选择了HashSet
HashSet<> hs = new HashSet();
不要忘记导包哦,它在java.util包下
2.定义Person类,重写方法
又因为本次写程序的重点是人类,所以在定义集合的时候要限定集合的类型——只能是人类,如此一来,Person类就诞生了!
具体代码如下,其中重写了三个方法,均可使用快捷键生成,eclipse可以右键选择重构,IDEA则使用Alt+Insert选择以下三种方法自动生成~(快速写代码技巧get!)
package classCode.person;
public class Person {
String name;
public Person(String name) {
this.name = name;
}
//重写equals方法
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o