• 大小: 8KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-07-20
  • 语言: Java
  • 标签: java  哈希表  

资源简介

[问题描述] 设计散列表实现电话号码查找系统。 [基本要求] [需求分析] (1)设每个记录有下列数据项: 电话号码、用户名、地址; (2)从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表; (3)采用一定的方法解决冲突; (4)查找并显示给定电话号码的记录; (5)查找并显示给定用户名的记录。 整个系统必须满足系统功能要求;设计不同的散列函数,比较冲突率;在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化。

资源截图

代码片段和文件信息

/*
 * To change this template choose Tools | Templates
 * and open the template in the editor.
 */

package phoneNumberSeek;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.objectInputStream;
import java.io.objectOutputStream;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Administrator
 */
public class NameHashTable {

private final String filePath = “data\\nameHash.dat“;

private int step;
List < SomeOne > [] hashTable;

public NameHashTable () {

step = 997;
hashTable = new ArrayList[997];
for ( int i = 0; i < 997; i++ ) {
hashTable[i] = new ArrayList < SomeOne > ();
}

} // end method NameHashTable


public boolean add ( String key SomeOne value ) {

int index = Math.abs ( key.hashCode () ) % step;

for ( int i = 0; i < hashTable[index].size (); i++ ) {

if ( hashTable[index].get ( i ).getName ().equals ( key )  ) {

return false;

} // end if

}// end for

hashTable[index].add ( value );
return true;

} // end method add


public SomeOne get ( String key ) {

int index = Math.abs ( key.hashCode () ) % step;

for ( int i = 0; i < hashTable[index].size (); i++ ) {
if ( hashTable[index].get ( i ).getName ().equals ( key ) ) {

return hashTable[index].get ( i );

} // end if
} // end for

return null;

} // end method getValue

public void modify ( String key SomeOne one ) {

int index = Math.abs ( key.hashCode () ) % step;

for ( int i = 0; i < hashTable[index].size (); i++ ) {
if ( hashTable[index].get ( i ).getName ().equals ( key ) ) {

hashTable[index].set ( i one );

} // end if
} // end for

} // end method modify

public SomeOne delete ( String key ) {

int index = Math.abs ( key.hashCode () ) % step;

for ( int i = 0; i < hashTable[index].size (); i++ ) {
if ( hashTable[index].get ( i ).getName ().equals ( key ) ) {

SomeOne temp = hashTable[index].get ( i );
hashTable[index].remove ( i );
return temp;

} // end if
} // end for

return null;

} // end method delete


public void load () {

try {

// file input stream
FileInputStream fis = new FileInputStream ( filePath );
// object input stream
objectInputStream ois = new objectInputStream ( fis );
// read bookList
hashTable = ( ArrayList [] ) ois.readobject ();
ois.close ();

} catch ( Exception e ) {
System.out.println ( “读取数据失败“ );
} // end try

} // end method read


public void save () {

try {

// file output stream
FileOutputStream fos = new FileOutputStream ( filePath );
// object output stream
objectOutputStream oos = new objectOutputStream ( fos );
// save books.dat
oos.writeobject ( hashTable );
oos.close ();

} catch ( Exception e ) {
System.out.println ( “保存数据失败“ );
} // end try

} // end method write

// public static void main ( String [] args ) {
//
// NameHashTable name = new NameHashTable ();
// name.save ();

// }

} // end class NameHashTabl

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3027  2011-01-09 21:51  java 电话号码查询系统(哈希表)\NameHashTable.java

     文件       2798  2011-01-09 21:51  java 电话号码查询系统(哈希表)\NumberHashTable.java

     文件      22569  2010-12-24 11:11  java 电话号码查询系统(哈希表)\PhoneTable.java

     文件       2299  2010-12-24 11:11  java 电话号码查询系统(哈希表)\PhoneTableModel.java

     文件        922  2010-12-24 11:08  java 电话号码查询系统(哈希表)\SomeOne.java

     目录          0  2011-08-25 16:19  java 电话号码查询系统(哈希表)

----------- ---------  ---------- -----  ----

                31615                    6


评论

共有 条评论