jjzjj

hashtable

全部标签

java - 是具有预定义容量的 HashMap 更快

我在网上遇到了一个算法http://www.coderanch.com/t/201836/Performance/java/Hashtable-vs-Hashmap并决定对其进行测试publicclassMapTest{staticintsizeOfTrial=100000;staticString[]keys=newString[sizeOfTrial];staticString[]vals=newString[sizeOfTrial];publicstaticvoidmain(String[]args){//initsizeOfTrialkey/valuepairsfor(inti

java - 为哈希选择合适的表大小

如果我有一个1000的key集,我的哈希表的合适大小是多少,如何确定? 最佳答案 这取决于加载因子(表将增加其大小并重新分配其元素的“满百分比”点)。如果您知道恰好有1000个条目,并且这个数字永远不会改变,您可以将加载因子设置为1.0并将初始大小设置为1000以获得最大效率。如果您不确定确切的大小,您可以将加载因子保留为默认值0.75,并将初始大小设置为1334(预期大小/LF)以获得真正良好的性能,但需要付出一定的代价额外的内存。您可以使用以下构造函数来设置加载因子:Hashtable(intinitialCapacity,fl

java - 哈希表使用多少内存?

在Java中,如果我创建一个Hashtable将N个元素放入其中,会占用多少内存?如果它依赖于实现,什么是好的“猜测”? 最佳答案 编辑;天哪,我是个白痴,我提供的信息是HashMap,而不是HashTable。但是,在检查之后,出于内存目的,实现是相同的。这取决于您的VM的内部内存设置(项目打包、32位或64位指针以及字对齐/大小)并且不是由java指定的。可以找到有关估算内存使用情况的基本信息here.你可以这样估计:在32位虚拟机上,指针为4个字节,在64位虚拟机上,为8个字节。对象开销是8字节的内存(对于空对象,不包含任何内

Java 字典搜索器

我正在尝试实现一个程序,该程序将接受用户输入,将该字符串拆分为标记,然后在字典中搜索该字符串中的单词。我对解析字符串的目标是让每个标记都是英文单词。例如:Input:amanSplitMethod:amanamanamanamanamanamanDesiredOutput:aman我目前有这段代码可以完成所有工作,直到所需的输出部分:importjava.util.Scanner;importjava.io.*;publicclassWords{publicstaticString[]dic=newString[80368];publicstaticvoidsplit(Stringhe

.net - 创建通用哈希表 - C++

.NETFramework有一个Dictionary类,该类作为哈希表实现,并在恒定时间(O(1))内提供数据检索。我正在寻找C++中的类似实现。我知道std::map但在此数据检索中需要对数时间。在C++中是否有任何好的哈希表实现可以在恒定时间内检索数据?如果我自己编写,我将如何计算key的哈希码?与.NET一样,我想到了对类型使用GetHashCode()方法。templateclassDictionary{public:voidAdd(TKeykey,TValval){inthashCode=key.GetHashCode();/*....*/}}如果我确实喜欢上面的操作并且给定

c++ - 在 C++ 中初始化模板时将函数传递给模板对象

我正在尝试为HashMap编写一个实现,除了iostream、string和cassert之外,我不允许使用stdlib中的任何内容。它需要是通用的,因此填充桶的值可以是任何类型。我为此需要模板,但无法设法以任何方式传递哈希函数。这将是头文件:templateclasshashTable{public:hashTable(intsize){//Createsanemptyvectorofsizeonthetable}define(Valuev){loadsvalueinVector[hashFunction(v)];}...private:Vectorwithalltheelement

c++ - 链接列表数组(使用散列)

我正在从事一个散列项目,目前在处理一系列链表时遇到困难。我的链表只能存储1个项目,所以我创建了一个具有2个成员变量(字符串键和字符串值)和各种成员函数的Pair类。我的问题是如何让Pair与我的Linked-list类一起工作?我的假设是执行以下操作:如果我想将数据添加到我的链表类中,我将创建一个带有参数的函数-voidinsert(Pairdata)-这会帮助我在我的列表中插入2个项目吗?这是我的C++代码,有人可以为我校对它并帮助我发现一些错误。#ifndefList_h#defineList_h#include"Node.h"#include"Pair.h"#includeusi

c++ - 使用智能指针制作哈希表?

我正在尝试使用智能指针制作哈希表,但我不确定我做的是否正确。我一直在尝试使用它们的两种组合,但恐怕我不知道如何将表格初始化为空?也许这是错误的措辞,但我被卡住了,我需要指出正确的方向。我的哈希节点:struct{hashNode(intk,std::stringi):key(k),item(i){};intkey;std::stringitem;}我的哈希表:classHashtable{public:Hashtable();//notsurehowtobuildtheconstructorbuildanemptytable.inthashFunction(intkey);intfin

c++ - 错误 C2662 无法从 const 转换为引用

这是我关于堆栈溢出的第一篇文章,我希望将来能加入社区。我正在为ADT类编写哈希表实现;我的大部分方法都在作业范围内达到了标准,但这让我很伤心。在这个我一直用来测试我编写的各种函数的测试应用程序中,我收到错误“errorC2662:'customer::getPhone':cannotconvert'this'ponterfrom'constcustomer'to'customer&'引用行“光标=find_ptr(entry.getPhone());”和“list_head_insert(data[hash(entry.getPhone())],entry);”我的函数实现代码如下:t

c++ - 从链表中删除节点

我已经创建了一个哈希表,我想从链表中删除一个节点。该代码适用于删除第一个节点,但不适用于删除其他节点。voidintHashTable::remove(intnum){intlocation=((unsigned)num)%size;Node*runner=table[location];intchecker;if(runner->next==NULL){if(num==table[location]->num){table[location]=NULL;}}else{if(table[location]->num==num){table[location]=table[locatio