Java第十三天(二)
Set
定义:一个不包含重复元素的Collection,并且最多只包含一个null元素。
特点:
①无序性(与添加顺序无关)
②元素唯一性(重复元素只存在一个)
③允许包含null元素,但只能存在一个
④不是线程安全的
Set中的方法全部继承于Collection,用法也与Collection一致,没有自己特有的方法。
HashSet
定义:此类实现Set接口,这个类提供了基本操作(add,remove,contains和size)。
无序性与元素唯一性
Set<String> set = new HashSet<String>();
set.add("赵一");
set.add("钱二");
set.add("张三");
set.add("李四");
set.add("王五");
set.add("王五");
System.out.println(set);
//使用增强for循环进行二次验证
for(String i:set) {
System.out.print(i+" ");
}
输出结果:
[李四, 张三, 王五, 钱二, 赵一]
李四 张三 王五 钱二 赵一
在Set中比较两个对象是否相等
步骤:
①现在成员变量类中重写父类Object的equals方法。
②使用if语句(instanceof)先判断对象是否与目标类对象的类型一致。
③将传递过来的对象强制转换成目标类对象的类型。
④再将各个成员变量进行比较(若存在字符串要先判断是否为空)。
⑤重写hashCode方法,使其值相等(返回相同的值)。
Set中判断两个对象是否相等,必须重写equals与hashCode方法,若这两个方法都符合相等的条件,才能判断这两个对象相等。
比较字符串类型的成员变量时,使用equals方法。
/*
* Student类
*/
public class Student {
//定义学生类成员变量
private int id;
private String name;
private int age;
/*
* 封装学生类的成员变量
*/
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return