⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hashmapping.java

📁 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 + -