📄 hashmapping.java
字号:
package lab3;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
import java.util.Date;
public class HashMapping {
static private Person[] person;
private static Person[] hashTable;
public static void
loadFile(String str) throws IOException{
String fileName = str;
BufferedReader input =
new BufferedReader( new FileReader( fileName ) );
int lines =0;
String line;
while ( ( line=input.readLine() )!=null )
{
lines++;
}
input.close();
BufferedReader input1 =
new BufferedReader( new FileReader( fileName ) );
person = new Person[lines];
int a=0;
while ( ( line=input1.readLine() )!=null )
{
StringTokenizer tokenizer = new StringTokenizer(line);
person[a] = new Person();
person[a].setID(Integer.parseInt(tokenizer.nextToken()));
person[a].setName(tokenizer.nextToken());
person[a].setGender(tokenizer.nextToken());
a++;
}
input1.close();
}
//initalize a list of name
public static void hash() throws IOException{
HashMapping.loadFile("person.txt");
hashTable = new Person[203];
Date date1 = new Date();
for(int j=0;j<person.length;j++){
insertPerson(person[j]);
}
Date date2 = new Date();
System.out.println(100000000*(date2.getTime()-date1.getTime())/person.length+"billisecond");
}
//search of a person
public static Person searchPerson(String name){
char[] nameArray = name.toCharArray();
int m = 0;
for (int u=0;u<nameArray.length ;u++ )
{
m+=(nameArray[u]+0);
}
m%=203;
while (!hashTable[m].getName().equals(name))
{
m++;
if(m>=203)
m=m/203;
}
if(hashTable[m].getName().equals(name)&&hashTable[m].isDelete()!=true){
return hashTable[m];
}
return null;
}
//delete a person
public static void deletePerson(String name){
int key = StringToInt(name);
while (hashTable[key]!=null)
{
if((hashTable[key].getName()).equals(name))
hashTable[key].setDelete(true);
key++;
if(key>=203)
key%=203;
}
}
//the in fact hash function
public static int StringToInt(String name){
char[] nameArray = name.toCharArray();
int m = 0;
for (int u=0;u<nameArray.length ;u++ )
{
m+=(nameArray[u]+0);
}
m%=203;
return m;
}
public static void insertPerson(Person person){
int m=StringToInt(person.getName());
//System.out.println(m);
int k=m;
if(hashTable[k]==null||hashTable[k].isDelete()==true){
hashTable[k]=person;
}
else{
while(hashTable[k]!=null
&&hashTable[k].isDelete()==false){
k++;
if(k>=203)
k=k/203;
}
hashTable[k]=person;
}
}
public static void main(String[] args){
try {
hash();
insertPerson(new Person(1999,"wangsibo","male"));
for(int j=0;j<HashMapping.hashTable.length;j++){
if(hashTable[j]!=null&&hashTable[j].isDelete()!=true)
System.out.println((HashMapping.hashTable[j]).getMessage());
}
/*deletePerson("wangsibo");
System.out.println("----------------");
for(int j=0;j<HashMapping.hashTable.length;j++){
if(hashTable[j]!=null&&hashTable[j].isDelete()!=true)
System.out.println((HashMapping.hashTable[j]).getMessage());
}*/
Person test = searchPerson("曾强");
if(test!=null)
System.out.println(test.getMessage());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -