4.30Java 手动敲简易的HashSet
先确定HashSet当中要拥有的方法和属性
-
add方法
-
size方法
传入的对象直接作为HashSet里面的HashMap的key值
属性包括:
-
HashMap
-
固定的一个常量值
定义一个HashSet类:
package collection.set;
import java.util.HashMap;
/**
* 手动实现一个简单的HashSet,理解HashSet底层原理
* @author Lucifer
*/
public class RealizeHashSet {
/*因为HashSet底层原理核心就是一个HashMap对象,所以先定义一个HashMap*/
HashMap map;
//定义一个固定的产量作为value值
public static final Object PRESENT = new Object();
/*构造器*/
public RealizeHashSet(){
//在这里直接当以Map对象
map = new HashMap();
}
/*获得里面的内容---直接然会map的size*/
public int size(){
//直接返回map的size方法---这里不是RealizeHashSet的size方法
return map.size();
}
/*调用add方法*/
public void add(Object o){
//返回值
//传入的对象作为key,一个常量作为固定的value值
map.put(o,PRESENT);
}
/*重写toString方法*/
@Override
public String toString(){
//返回一个字符串---StringBuilder类下的方法
StringBuilder sb = new StringBuilder();
//添加头符号
sb.append("[");
//打印遍历里面所有的key---增强for循环
for (Object key : map.keySet()){
//循环元素
sb.append(key + ",");
}
//直接返回sb的toString方法
sb.setCharAt(sb.length() - 1, ']');
return sb.toString();
}
}
测试类:
package collection.set;
/**
* 测试RealizeHashSet的实现
* @author Lucifer
*/
public class Test {
public static void main(String[] args) {
//创建类对象
RealizeHashSet rhs = new RealizeHashSet();
//调用类里面的方法
rhs.add("Lucifer");
rhs.add("Harden");
rhs.add("JunKingBoy");
//打印出结果
System.out.println(rhs);
}
}