zoukankan      html  css  js  c++  java
  • 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);
      }
    }

     

     

    It's a lonely road!!!
  • 相关阅读:
    [转]群控电梯调度算法
    [转] 电梯调度算法总结
    [转]grub2.0和之前版本修复解决方案
    [转]Ubuntu 10.04 编译安装最新版本Linux2.6.34内核
    [转]PS2 键盘工作方式
    [转]个人管理 - 目标管理之前,你会时间管理吗
    [转]ubuntu 下编译内核简单步骤
    [转]关闭Google安全搜索,实现无限制搜索
    [转]Vim 复制粘贴探秘
    [转]Linux文件搜索
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14723393.html
Copyright © 2011-2022 走看看