📄 abstracthashtable.cs
字号:
namespace Opus6
{
using System;
using System.Collections;
using System.Text;
[Copyright("Copyright (c) 2001 by Bruno R. Preiss, P.Eng."), Version("$Id: AbstractHashTable.cs,v 1.4 2001/10/28 19:50:09 brpreiss Exp $")]
public abstract class AbstractHashTable : AbstractSearchableContainer, HashTable, SearchableContainer, Container, IComparable, IEnumerable
{
protected AbstractHashTable()
{
}
protected int F(object obj)
{
return obj.GetHashCode();
}
protected int G(int x)
{
return (Math.Abs(x) % this.Length);
}
protected int H(object obj)
{
return this.G(this.F(obj));
}
private static string Octal(int arg)
{
uint num1 = (uint) arg;
char[] chArray1 = new char[12];
int num2 = 0;
while (num1 != 0)
{
chArray1[num2++] = (char) ((ushort) ((num1 % 8) + 0x30));
num1 /= 8;
}
chArray1[num2++] = '0';
StringBuilder builder1 = new StringBuilder();
while (num2 > 0)
{
builder1.Append(chArray1[--num2]);
}
return builder1.ToString();
}
public static void TestHash()
{
Opus6.Console.WriteLine("ett={0}", AbstractHashTable.Octal(((ComparableObject) "ett").GetHashCode()));
Opus6.Console.WriteLine("tv\x00e5={0}", AbstractHashTable.Octal(((ComparableObject) "tv\x00e5").GetHashCode()));
Opus6.Console.WriteLine("tre={0}", AbstractHashTable.Octal(((ComparableObject) "tre").GetHashCode()));
Opus6.Console.WriteLine("fyra={0}", AbstractHashTable.Octal(((ComparableObject) "fyra").GetHashCode()));
Opus6.Console.WriteLine("fem={0}", AbstractHashTable.Octal(((ComparableObject) "fem").GetHashCode()));
Opus6.Console.WriteLine("sex={0}", AbstractHashTable.Octal(((ComparableObject) "sex").GetHashCode()));
Opus6.Console.WriteLine("sju={0}", AbstractHashTable.Octal(((ComparableObject) "sju").GetHashCode()));
Opus6.Console.WriteLine("\x00e5tta={0}", AbstractHashTable.Octal(((ComparableObject) "\x00e5tta").GetHashCode()));
Opus6.Console.WriteLine("nio={0}", AbstractHashTable.Octal(((ComparableObject) "nio").GetHashCode()));
Opus6.Console.WriteLine("tio={0}", AbstractHashTable.Octal(((ComparableObject) "tio").GetHashCode()));
Opus6.Console.WriteLine("elva={0}", AbstractHashTable.Octal(((ComparableObject) "elva").GetHashCode()));
Opus6.Console.WriteLine("tolv={0}", AbstractHashTable.Octal(((ComparableObject) "tolv").GetHashCode()));
}
public static void TestHashTable(HashTable hashTable)
{
Opus6.Console.WriteLine(hashTable);
hashTable.Insert(new Association("foo", 1.2));
hashTable.Insert(new Association("bar", 3.4));
hashTable.Insert(new Association("foo", 5.6));
Opus6.Console.WriteLine(hashTable);
ComparableObject obj1 = hashTable.Find(new Association("foo"));
Opus6.Console.WriteLine(obj1);
hashTable.Withdraw(obj1);
Opus6.Console.WriteLine(hashTable);
foreach (Association association1 in hashTable)
{
Opus6.Console.WriteLine(association1);
}
}
public abstract int Length { get; }
public virtual double LoadFactor
{
get
{
return (((double) this.Count) / ((double) this.Length));
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -