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

 

 

上一篇:安卓开发笔记(三十四):Material Design框架实现优美的左侧侧滑栏


下一篇:剑指offer-数组中的重复数组