各位大哥,我想建一个hashtable用于搜索,但是看了java的关于hashtable的说名,弄的一塌糊涂。java提供的好多关于hashtable的类,比如HashTable,HashMap,HashSet,LinkedHashMap等等,这些类到底是怎么使用的?请高手给我介绍一下建个hashtable,实现insert,delete,search的过程,以及这些类到底是怎么应用的?谢谢!

解决方案 »

  1.   

    HashTable nums = new HaskTable();nums.put("one", new Integer(1));
    nums.put("two", new Integer(2));
    nums.put("three", new Integer(3));Integer n = (Integer)nums.get("two");nums.remove("three");nums.clear();
      

  2.   

    java 是怎么处理hash collision的?
      

  3.   

    我还是不是太明白:put(key,value)中key和value代表什么东西?以前学数据结构的时候,key经过hash函数,hash(key)会得出这个key在hashtable 中的位置,而因为hash collision,这个位置通常都会对应一个链表用来存储所有被hash到这个位置的元素。如果要取出某个元素的话,是要先找出它的key,然后hash到相应的位置,最后在search哪个链表才能得到?java的get(key)方法难道就一定得出的是唯一元素吗?那如果被hash到那个个位置的元素不止一个怎么办?
      

  4.   

    还有,我是不是可以认为java的hashtable类中,key和元素是一一对应的。在put函数中,事实上是指定了这种对应关系?这样的话,到是可以理解put函数的结果。
      

  5.   

    1、看看JDK文档
    2、自己编几个程序试试
      

  6.   

    Hashtable table = new Hashtable();
    table.put("a","a");
    table.put("b","b");
    table.put("c","b");
    table.remove("a");  //删除
    Iterator iter = table.keySet().iterator();//遍历
    while (iter.hasNext()){
    table.get(iter.next().toString());
    }
      

  7.   

    楼上的iterator是在遍历所有的key,如果我没有理解错的话。但是这会有两个问题啊,首先hash到同一位置的key可能不止一个,另外,就算被hash到某个位置的key只有一个,那么拥有同一个key的元素也可能不止一个,那么get(key)得出来的到底是什么?
      

  8.   

    key ,value说白了就是键值对
    这有点像python  里面的字典
    写成员是关于hashtable的类 有时候需要重写equals,compareTo方法  可以注意一下