HashSet类的用法及代码
来源:互联网 发布:淘客数据采集器下载 编辑:程序博客网 时间:2024/05/16 07:02
1. 何为重复的元素?
HashSet类中的 Set是一种不含重复元素的容器,类似数学中的集合概念。
Set 中没有包含满足 (e==null ? e2==null : e.equals(e2)) 的元素 e2
2 .如何保证元素的唯一性?
比如,调用HashSet向该 set 中添加指定的元素 e 时,
如果此 set 已经包含该元素,则该调用不改变此 set 并返回 false。
3. equals() 与 == 有何区别?
equals() 判断两个对象是否“相等”可以叫做对象值相等,一般要根据两个对象的内容来判断。
而 == 则不同,它仅判断两个变量是否引用了同一个对象,即“引用相等”
4.什么情况下必须改写 equals() ?
简单说就是要让 equals() 表达不同于== (引用相等)的“值相等”的含义时。
代码:
public class SetTest {
public static void main(String[] args) {
Set<Dog> dogHouse=new HashSet<Dog>();
Dog dahuang=new Dog("大黄",2,"黄色的","公狗");
Dog huahua=new Dog("花花",4,"红色的","母狗");
Dog xixi=new Dog("西西",3,"白色的","公狗");
Dog dahuangdi=new Dog("大黄",2,"黄色的","公狗");
// dahuangdi与dahuang实体内容相等,但是引用不相等
Dog dahuangxiong=dahuangdi;//大黄弟弟和哥哥的引用是相等的
dogHouse.add(huahua);
dogHouse.add(dahuang);
//dogHouse.add(dahuangdi);
dogHouse.add(xixi);
boolean result1=dogHouse.add(dahuangdi);
System.out.println("dahuangdi是否添加入集合?:");
System.out.println(result1);//看看是否添加进去了
boolean result2=dogHouse.add(dahuangxiong);//结果是false
System.out.println("dahuangxiong是否添加入集合?:");
System.out.println(result2);//看看是否添加进去了
//验证引用相等性
System.out.println("dahuang的hashCode是:");
System.out.println(dahuang.hashCode());
System.out.println("dahuangdi的hashCode是:");
System.out.println(dahuangdi.hashCode());
System.out.println("dahuangxiong的hashCode是:");
System.out.println(dahuangxiong.hashCode());
System.out.println("dahuangxiong与dahuangdi的hashcode()是否相等");
System.out.println(dahuangxiong.hashCode()==dahuangdi.hashCode());
//dahuangxiong与dahuangdi的哈希码比较结果true
System.out.println("dahuang与dahuangdi的hashcode()是否相等");
System.out.println(dahuang.hashCode()==dahuangdi.hashCode());
//dahuang与dahuangdi的哈希码比较结果false
Iterator<Dog> iterator=dogHouse.iterator();
while(iterator.hasNext()){
(iterator.next()).bark();
}
}
}
Set<Dog> dogHouse=new HashSet<Dog>();
Dog dahuang=new Dog("大黄",2,"黄色的","公狗");
Dog huahua=new Dog("花花",4,"红色的","母狗");
Dog xixi=new Dog("西西",3,"白色的","公狗");
Dog dahuangdi=new Dog("大黄",2,"黄色的","公狗");
// dahuangdi与dahuang实体内容相等,但是引用不相等
Dog dahuangxiong=dahuangdi;//大黄弟弟和哥哥的引用是相等的
dogHouse.add(huahua);
dogHouse.add(dahuang);
//dogHouse.add(dahuangdi);
dogHouse.add(xixi);
boolean result1=dogHouse.add(dahuangdi);
System.out.println("dahuangdi是否添加入集合?:");
System.out.println(result1);//看看是否添加进去了
boolean result2=dogHouse.add(dahuangxiong);//结果是false
System.out.println("dahuangxiong是否添加入集合?:");
System.out.println(result2);//看看是否添加进去了
//验证引用相等性
System.out.println("dahuang的hashCode是:");
System.out.println(dahuang.hashCode());
System.out.println("dahuangdi的hashCode是:");
System.out.println(dahuangdi.hashCode());
System.out.println("dahuangxiong的hashCode是:");
System.out.println(dahuangxiong.hashCode());
System.out.println("dahuangxiong与dahuangdi的hashcode()是否相等");
System.out.println(dahuangxiong.hashCode()==dahuangdi.hashCode());
//dahuangxiong与dahuangdi的哈希码比较结果true
System.out.println("dahuang与dahuangdi的hashcode()是否相等");
System.out.println(dahuang.hashCode()==dahuangdi.hashCode());
//dahuang与dahuangdi的哈希码比较结果false
Iterator<Dog> iterator=dogHouse.iterator();
while(iterator.hasNext()){
(iterator.next()).bark();
}
}
}
class Dog {
private String name;// 名字
private int age;// 年龄
private String furColor;// 毛色
private String xingbie;// 性别
private String name;// 名字
private int age;// 年龄
private String furColor;// 毛色
private String xingbie;// 性别
public Dog(String name, int age, String furColor, String xingbie) {
super();
this.name = name;
this.age = age;
this.furColor = furColor;
this.xingbie = xingbie;
}
super();
this.name = name;
this.age = age;
this.furColor = furColor;
this.xingbie = xingbie;
}
public String getXingbie() {
return xingbie;
}
return xingbie;
}
public void setXingbie(String xingbie) {
this.xingbie = xingbie;
}
this.xingbie = xingbie;
}
public String getName() {
return name;
}
return name;
}
public void setName(String name) {
this.name = name;
}
this.name = name;
}
public int getAge() {
return age;
}
return age;
}
public void setAge(int age) {
this.age = age;
}
this.age = age;
}
public String getFurColor() {
return furColor;
}
return furColor;
}
public void setFurColor(String furColor) {
this.furColor = furColor;
}
this.furColor = furColor;
}
public void bark() {
System.out.println("我是一只" + getFurColor() + getXingbie() + "小狗,我的名字"+ getName() + "我" + getAge() + "岁了");
}
System.out.println("我是一只" + getFurColor() + getXingbie() + "小狗,我的名字"+ getName() + "我" + getAge() + "岁了");
}
}
0 0
- HashSet类的用法及代码
- HashSet类的用法
- HashSet类的用法
- HashSet的用法
- hashset的用法
- HashSet的用法
- HashSet的用法
- HashSet的基本用法
- 数组,ArrayList,HashSet的用法及注意点。
- HashSet存储元素保证唯一性的代码及图解
- java中hashset的用法
- Java中HashSet的用法
- HashMap和HashSet的用法
- java.util 类 Hashset用法
- Collection List Set SortedSet ArrayList LinkedList HashSet LinkedHashSet TreeSet的认识及用法
- 浅谈对java中的hashset和Treeset 中重写equals()方法的不同及用法
- HashSet用法
- HashSet用法
- Path 路径类 | Directory 文件夹类 | File 文件类 | FileStream 文件流类----------StreamReaded与StreamWriter
- 第十六周 项目二--用指针玩字符串(2.7 比较两个字符串,返回值同strcmp()--指针作形参)
- kebi
- iOS应用商店审核指南
- windows基础应用程序编程(十三)定时器
- HashSet类的用法及代码
- 数列区间询问中的分块思想CF86D,BC#22-1004-NPY and girls
- 信号量与pv操作
- 青橙N1云OS系统刷机
- 图的二着色问题
- iOS 左右侧滑实现 UIView Block 方式 模仿网易左右侧滑效果
- 动漫周刊总结
- 通向成功的23个方法
- c#编程中的各种个人经验总结