package com.lirui.hashset;
import java.util.HashSet;
import java.util.Iterator;
/*
* HashSet底层是基于HashMap实现的,封装了一个HashMap对象来存储所有对象的元素,所有放入HashSet中的元素
public class HashSetTest {
private String city;
private double averageSalary;
public HashSetTest() {
}
public HashSetTest(String city, double averageSalary) {
this.city = city;
this.averageSalary = averageSalary;
}
public String getCity() {
return city;
}
public double averageSalary() {
return averageSalary;
}
@Override
public int hashCode() {
return city.hashCode();
}
@Override
public boolean equals(Object obj) {
if (hashCode() == obj.hashCode())
return true;
else {
return false;
}
}
@Override
public String toString() {
return city + ":" + String.valueOf(this.averageSalary);
}
public static void main(String[] args) {
HashSet<HashSetTest> set = new HashSet<>();
set.add(new HashSetTest("nanjing", 6410.2));
set.add(new HashSetTest("hangzhou", 7120.3));
set.add(new HashSetTest("xianning", 3521.0));
System.out.println(set);
System.out.println(set);
System.out.println(set.size()); //集合中元素的个数
System.out.println("是否为空:" + set.isEmpty());
Iterator iterator = set.iterator();
while (iterator.hasNext()) { //迭代器遍历set中的元素
System.out.print(iterator.next() + " ");
}
System.out.println();
set.clear();
System.out.println("是否为空:" + set.isEmpty());
}
}
import java.util.HashSet;
import java.util.Iterator;
/*
* HashSet底层是基于HashMap实现的,封装了一个HashMap对象来存储所有对象的元素,所有放入HashSet中的元素
* 都保存在HashMap的key中,value中则存储一个静态Object对象,我们先来看看具体实现
*看这个链接 http://alex09.iteye.com/blog/539549
*/
public class HashSetTest {
private String city;
private double averageSalary;
public HashSetTest() {
}
public HashSetTest(String city, double averageSalary) {
this.city = city;
this.averageSalary = averageSalary;
}
public String getCity() {
return city;
}
public double averageSalary() {
return averageSalary;
}
@Override
public int hashCode() {
return city.hashCode();
}
@Override
public boolean equals(Object obj) {
if (hashCode() == obj.hashCode())
return true;
else {
return false;
}
}
@Override
public String toString() {
return city + ":" + String.valueOf(this.averageSalary);
}
public static void main(String[] args) {
HashSet<HashSetTest> set = new HashSet<>();
set.add(new HashSetTest("beijing", 8600.3)); //插入新的元素
set.add(new HashSetTest("wuhan", 5620.4));set.add(new HashSetTest("nanjing", 6410.2));
set.add(new HashSetTest("hangzhou", 7120.3));
set.add(new HashSetTest("xianning", 3521.0));
System.out.println(set);
boolean flag = set.add(new HashSetTest("beijing", 7452.0));
//这里会插入失败,因为重写了equal方法,而set集合不能保存重复元素,只要city相同,这里判断就是相同的元素
System.out.println("插入是否成功:" + flag);System.out.println(set);
System.out.println(set.size()); //集合中元素的个数
System.out.println("是否为空:" + set.isEmpty());
Iterator iterator = set.iterator();
while (iterator.hasNext()) { //迭代器遍历set中的元素
System.out.print(iterator.next() + " ");
}
System.out.println();
set.remove(new HashSetTest("beijing", 7600.3));
//这里会删除元素是无论新创建一个对象,还是原有对象,只要city相同,就会判断和集合中元素相同,然后将该元素删掉,所以我们定义equal()方法时
//一定要注意使用场景。
set.clear();
System.out.println("是否为空:" + set.isEmpty());
}
}