标签: hashtable

需要在java中内部实现HashTable

我需要在java代码中实现HashTable内部实现.您还可以通过代码中的附加注释向我解释它是如何工作的.

我只掌握了HashTable中使用的负载系数和容量的一些基本知识,其中负载系数为0.75.你能用一个简短的例子来解释吗?

我很长时间都坚持这个.

1>为什么哈希表的加载因子为0.75而不是其他一些不同的值.很奇怪请澄清一下.

2>为什么我们没有HashMap的加载因子?
我不想要现有的代码.有人编写了比实际编写的代码更好的代码

java collections hashtable

0
推荐指数
1
解决办法
4022
查看次数

Qt应用程序将无法编译

这一直困扰着我.我正在尝试创建一个带有哈希表的函数,并返回所述哈希表.但是我在头文件中收到此错误,

error: ‘string’ was not declared in this scope.
error: template argument 1 is invalid
Run Code Online (Sandbox Code Playgroud)

这是头文件本身:

#ifndef NAME_SPAWN_H
#define NAME_SPAWN_H
#include <QString>
#include <QHash>
#include <string>

class Name_Spawn
{
public:
    Name_Spawn();
    void initalize();
private:
    QString int_2_str(int);
    void seed();
    QHash<string,QString> setTable(QHash<string,QString>);
};

#endif // NAME_SPAWN_H
Run Code Online (Sandbox Code Playgroud)

如您所见,已声明字符串.有任何想法吗?我没办法.

c++ qt hashtable

0
推荐指数
1
解决办法
982
查看次数

什么是"x位散列函数"

64位散列函数究竟是什么意思?这是否意味着它可以将键映射到最近的2 ^ 64个位置?

c++ hash hashtable

0
推荐指数
1
解决办法
130
查看次数

创造更好的哈希函数

#include <iostream>
#include <iomanip>
#include <string>
#include <vector>

using namespace std;

class Item {
public:
    Item(const string & v): value(v), next(0) { }
    string value;
    Item * next;
};

int hash_function(const string & s)
{
    unsigned int hashval = 0;
    int i = s.length();
    while (i > 0)
{
        hashval += s[--i];
}       
return hashval%101;
}

main()
{
    string name;
    int index;
    Item * p;

    vector<Item *> bucket(101);

    for (index = 0; index < 101; index++)
        bucket[index] = 0;

    while …
Run Code Online (Sandbox Code Playgroud)

c++ hash hashtable hashmap

0
推荐指数
1
解决办法
2552
查看次数

在C#中处理Hashtables时有没有办法避免转换?

我想知道有没有办法覆盖Hashtable(或Dictionary)类,所以它会自动对对象进行装箱/拆箱操作.换一种说法:

myHashtable["value1"] = "this_is_string";
myHashtable["value2"] = 123;

string a = myHashtable["value1"];
int b = myHashtable["value2"];
// errors as expected, since i need to cast it to specific type from object
Run Code Online (Sandbox Code Playgroud)

显然C#不允许用不同的类型覆盖公共T这个[对象键]操作符,因为我试图做这样的事情:

public int this[object key] { get { return (base[key] as int); } set {} } // etc
public string this[object key] { get { return (base[key] as string); } set {} } // etc
// error
Run Code Online (Sandbox Code Playgroud)

任何想法或提示什么是最简单的方法(如果有的话),以避免在C#中使用关联数组时进行转换(没有必要严格使用Hashtable)?如果没有办法做到这一点,我会很感激,如果有一个比我更有知识的人,解释为什么会这样,以及它背后的基本原理是什么.

谢谢.

编辑: 我需要它的原因是,我正在创建一个自定义的设置类.设置可能具有不同类型的值,例如让"HowManyItemsToDisplay"具有某个整数值,而"NameOfSomeControl"将是一个字符串.因此,在编写类似以下内容时避免任何转换会很好:

myControl.Text = MySettings["SomeTextValue"];
Run Code Online (Sandbox Code Playgroud)

要么

while (MySettings["SomeIntValue"] > …
Run Code Online (Sandbox Code Playgroud)

c# associative-array casting hashtable

0
推荐指数
1
解决办法
534
查看次数

这个散列表不应该只读吗?

我有一个类,它有一个名为_Parameters的哈希表的getter函数.

private Hashtable _Parameters = new Hashtable();
public Hashtable Parameters { get { return _Parameters; } }
Run Code Online (Sandbox Code Playgroud)

_Parameters未在代码中的任何其他位置引用.现在,由于没有setter函数,我认为这个类之外的任何东西都不能修改_Parameters存储的内容,只能读取它.然而事实并非如此.另一个类调用此代码(其中template是上面提到的类的实例)

template.Parameters[key] = parameters[key];
Run Code Online (Sandbox Code Playgroud)

这最终修改了_Parameters.这怎么可能?如果我们使用'='分配vales,setter函数是否只适用?

c# hashtable getter-setter

0
推荐指数
1
解决办法
875
查看次数

Java哈希表错误 - 标识符预期和非法类型的启动?

这应该是具有多个关键字的简单解释器的一部分,我将其制作成不同的类.该程序应该遍历ArrayList,将字符串标记化并将它们解析为KEYWORD +指令.我正在使用散列映射将所有这些关键字映射到具有类的接口,其中进行其余的处理.目前正在测试其中一个关键字类,但是当我尝试编译时,编译器会抛出"标识符预期"和"非法启动类型"消息.抛出所有错误消息的行是第18行.代码在哪里变得难以理解?我无法分辨,因为我之前从未使用过HashTable.谢谢您的帮助!

import java.util.*;

public class StringSplit
{
interface Directive //Map keywords to an interface
{
    public void execute (String line);
}
    abstract class endStatement implements Directive
    {
        public void execute(String line, HashMap DirectiveHash)
        {   
            System.out.print("TPL finished OK [" + " x lines processed]");
            System.exit(0);
        }
    }
    private Map<String, Directive> DirectiveHash= new HashMap<String, Directive>();
    DirectiveHash.put("END", new endStatement());

    public static void main (String[]args)
    {
        List <String> myString= new ArrayList<String>();
        myString.add(new String("# A TPL HELLO WORLD PROGRAM"));
        myString.add(new String("STRING myString"));
        myString.add(new String("INTEGER …
Run Code Online (Sandbox Code Playgroud)

java hashtable

0
推荐指数
1
解决办法
4490
查看次数

找出密钥中是否存在子密钥

我有一个像这样的YAML文件:

options:
    some_option: 'foo'
Run Code Online (Sandbox Code Playgroud)

我加载为哈希yaml,我希望能够使用它include?来获取一个布尔值,告诉它是否存在密钥.

要获取子键options,我通常会使用yaml["options"]["some_option"],但是如何判断YAML哈希是否包含["options"]["some_option"]?你做不了类似的事情:

if yaml.include? "options"["some_option"] # or
if yaml.include? ["options"]["some_option"] # or even
if yaml.include? yaml["options"]["some_option"]
Run Code Online (Sandbox Code Playgroud)

有没有办法检索optionsYAML哈希中的子键?

ruby yaml hashtable

0
推荐指数
1
解决办法
3423
查看次数

通过两个整数键存储和检索值的最快方法

我需要超级快速存储并通过两个整数键检索值.

所以我有输入值uint Id1, uint Id2,需要得到uint Count.

我也知道最大值Id1Id2(约为5 000 000).

我目前的实现大约占应用程序工作时间的70%,可能需要几天时间.

它只是使用标准的.net词典,当然可以改进.但我想这是计算机科学中非常有用的操作,毫无疑问存在更高效的算法.

这是我的实施

void Main()
{
    var rep = new Repository();

    var sw = new Stopwatch();

    sw.Start();

    for (uint i = 0; i < 10000; i++)
    {
        for (uint j = 0; j < 1000; j++)
        {
            rep.Add(new DomainEntity(){Id1 = i, Id2 = j, Count = 1});
        }
    }

    for (uint i = 0; i < 10000; i++)
    {
        for (uint j = …
Run Code Online (Sandbox Code Playgroud)

c# performance hashtable

0
推荐指数
1
解决办法
1041
查看次数

在以对象作为值的Java哈希表中,如何返回对象值?

这是我的示例代码.这打印出"{test = theClass @ 7096985e}"但我需要它给我类型和范围的值.我尝试了几件事 - 任何方向都会很棒.谢谢!

import java.util.*;

class theClass {
    String type;
    String scope;

    public theClass(String string1, String string2) {
        type = string1; scope = string2;
    }

}

public class Sandbox {

    public static void main(String[] args){
        Hashtable<String, theClass> theTable = new Hashtable<String, theClass>();
        theClass object = new theClass("int", "global");
        theTable.put("test", object);

        System.out.println(theTable.toString());

    }
}
Run Code Online (Sandbox Code Playgroud)

java hashtable

0
推荐指数
1
解决办法
1686
查看次数