4.30Java 手动敲简易的HashSet

2021/4/30 22:55:14

本文主要是介绍4.30Java 手动敲简易的HashSet,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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);
    }
}

 

 



这篇关于4.30Java 手动敲简易的HashSet的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程