草庐IT

哈希切割

全部标签

Java 从哈希码重新创建字符串

有什么方法可以在java中使用字符串的哈希码,并重新创建该字符串?例如像这样:StringmyNewstring=StringUtils.createFromHashCode("HelloWorld".hashCode());if(!myNewstring.equals("HelloWorld"))System.out.println("Hmm,somethingwentwrong:"+myNewstring);我这样说是因为我必须将一个字符串转换为一个整数值,并从该整数值重建该字符串。 最佳答案 这是不可能的。String的哈希码

java - 正如 Joshua Bloch 在有效 Java 中所建议的那样,缓存哈希码如何在 Java 中工作?

我有以下来自JoshuaBloch的effectivejava的代码(第9项,第3章,第49页)Ifaclassisimmutableandthecostofcomputingthehashcodeissignificant,youmightconsidercachingthehashcodeintheobjectratherthanrecalculatingiteachtimeitisrequested.Ifyoubelievethatmostobjectsofthistypewillbeusedashashkeys,thenyoushouldcalculatethehashcode

java - TreeSet/TreeMap 等同于 HashSet/HashMap(自定义哈希)

TreeSet有一个带有比较器的构造函数,这意味着即使您存储的对象不是Comparable对象本身,您可以提供自定义比较器。有无序集的类似实现吗?(例如HashSet的替代方案采用“散列器”对象计算可能与对象自身实现不同的对象T的equals()和hashCode()?)C++std::hash_set给你这个,只是想知道是否有Java的东西。编辑:@Max提出了关于equals()的一个很好的技术观点-很公平;TreeMap也是如此和HashMap键通过Map.containsKey().但是是否还有其他众所周知的数据结构允许通过自定义散列器进行组织? 最

java - 当 hashcode() 实现返回常量值时,为什么哈希表会退化为链表?

//Theworstpossiblelegalhashfunction-neveruse!@OverridepublicinthashCode(){return42;}It’slegalbecauseitensuresthatequalobjectshavethesamehashcode.It’satrociousbecauseitensuresthateveryobjecthasthesamehashcode.Therefore,everyobjecthashestothesamebucket,andhashtablesdegeneratetolinkedlists.Programs

哈希表解决数字出现次数问题

前言————【哈希表】是什么呢?简单理解就是运用一个数组存放数据,当想要运用这个数组中的数据时只需要运用关键字访问数组寻找数据即可。比如说我们要在字典中查找逻辑一词中的“辑”字,我们可以运用拼音或者部首方法查找“ji”拼音的汉字或者以“车”为部首的若干字,进而在这些汉字数据中寻找“辑”;同样地我们要是想寻找happy这个单词的意思的话,也得在英汉字典里寻找以“h”开头的单词,再在众多以“h”开头单词中寻找“a”为第二个字母的单词...以此类推,直至找到它。哈希表本质就是数组,或者说,你可以把它理解成数组。因为数组同样存放数据,也同样拥有关键字也就是数组的下标来访问寻找指定的数据。哈希表想深入了

C++STL详解(十) -- 使用哈希表封装unordered_set和unordered_map

文章目录哈希表模板参数改造针对模板参数V改造增加仿函数获取具体数据类型.哈希表的正向迭代器正向迭代器中的内置成员:正向迭代器的成员函数哈希表插入函数的修改(适用于unordered_map)一个类型K去做set和unordered_set他的模板参数的必备条件.unordered_set的模拟实现(完整代码)unordered_map的实现(完整代码)适用于unordered_set和unordered_map的哈希表代码哈希表模板参数改造针对模板参数V改造因为不同容器的类型不同,如果是unordered_map,V代表一个键值对,如果unordered_set,V代表Key值,而底层哈希表并

java - 为什么会延迟生成 Java String 哈希码?

在java.lang.String.java中出现,Java只会生成hashcode,然后在调用hashcode()之后存储它,但为什么不直接在构造函数中生成hashcode?相关代码:if(h==0&&count>0){intoff=offset;charval[]=value;intlen=count;for(inti=0;i大部分都可以放在构造函数中。 最佳答案 为什么要花时间生成一个很可能不会被使用的哈希码?大多数字符串都是在没有调用hashcode()的情况下构造、使用然后进行垃圾回收的。

Java : HashSet vs. 哈希表

我有一个处理大量数据集的程序。对象最好存储在哈希实现的容器中,因为程序会不断在容器中寻找对象。第一个想法是使用HashMap,因为这个容器的get和remove方法更适合我需要的用途。但是,我发现HashMap的使用非常消耗内存,这是一个主要问题,所以我认为切换到HashSet会更好,因为它只使用,而不是每个元素,但是当我查看实现时,我了解到它使用底层HashMap!这意味着它不会节省任何内存!所以这是我的问题:我所有的假设都是正确的吗?HashMap内存浪费吗?更具体地说,每个条目的开销是多少?HashSet和HashMap一样浪费吗?是否有任何其他基于Hash的容器会显着减少内存消

java - 优雅地编写初始化的静态哈希表

这个问题在这里已经有了答案:InitializingHashtablesinJava?(10个答案)关闭5年前。有没有一种方法可以在java中以键值对的形式编写静态最终哈希表,就像您可以方便地初始化字符串数组一样:String[]foo={"A","AB"};基本上我的意思是不必为键值对写“put”这个词,而是可能是这样的:Hashtablefoo={"JJ":"222","KK":"222"}哪个IMO看起来更优雅。(我知道初始化需要在一个静态block中。我暂时不考虑它)

java - 如何枚举哈希表的键和值?

我有一个问题;我有一些数据,我用Hashtable显示它例如我写:Enumerationkeys;keys=CellTraffic_v.elements();while(keys.hasMoreElements())outputBuffer.append(keys.nextElement()+"\n\n");但它只显示值我如何同时显示值和键?例如这个如果我的key是“A”我的值(value)是“B”给我看这个:AB谢谢... 最佳答案 Hashtable工具Map.Map.entrySet函数返回Set的集合(Map.Entry)实