我需要在java代码中实现HashTable的内部实现.您还可以通过代码中的附加注释向我解释它是如何工作的.
我只掌握了HashTable中使用的负载系数和容量的一些基本知识,其中负载系数为0.75.你能用一个简短的例子来解释吗?
我很长时间都坚持这个.
1>为什么哈希表的加载因子为0.75而不是其他一些不同的值.很奇怪请澄清一下.
2>为什么我们没有HashMap的加载因子?
我不想要现有的代码.有人编写了比实际编写的代码更好的代码
这一直困扰着我.我正在尝试创建一个带有哈希表的函数,并返回所述哈希表.但是我在头文件中收到此错误,
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)
如您所见,已声明字符串.有任何想法吗?我没办法.
#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) 我想知道有没有办法覆盖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) 我有一个类,它有一个名为_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函数是否只适用?
这应该是具有多个关键字的简单解释器的一部分,我将其制作成不同的类.该程序应该遍历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) 我有一个像这样的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哈希中的子键?
我需要超级快速存储并通过两个整数键检索值.
所以我有输入值uint Id1, uint Id2,需要得到uint Count.
我也知道最大值Id1和Id2(约为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) 这是我的示例代码.这打印出"{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)