2016-05-08 14 views
1

私はハッシュテーブルを使用する小さな電話帳アプリケーションを作成するのに助けが必要です。 これは私の学校に割り当てられたものです。私はJavaにとって非常に新しいので、私は本当にこれについて私の頭を得ることはできません。ハッシュテーブルを使用して電話帳

私は、アプリケーションがどのように機能するかに関するコードの基本的なレイアウトを持っています。私はハッシュテーブルを実装する方法を忘れています。

私はJavaで組み込みのデータ構造を使用することはできないため、ゼロからハッシュテーブルを構築する必要があります。私は、しかし、ハッシュテーブルのためのネイティブhashCode()関数を使用することができます。私は答えとしてこれを掲示するために謝罪

import java.util.Scanner; 

public class PhoneBook { 

public static void main(String[] args) { 

    boolean exitPhoneBook = false; 
    Scanner userInput = new Scanner(System.in); 

    while (exitPhoneBook == false) { 

     System.out.println("What do you want to do?"); 
     System.out.println("1. Add a contact"); 
     System.out.println("2. Show a contact"); 
     System.out.println("3. Delete a contact"); 
     System.out.println("4. Show all contacts"); 
     System.out.println("5. Exit"); 
     System.out.print("Select a number: "); 

     int action = userInput.nextInt(); 

     switch (action){ 
     case 1: 
      addContact(); 
      break; 

     case 2: 
      showContact(); 
      break; 

     case 3: 
      deleteContact(); 
      break; 

     case 4: 
      showAll(); 
      break; 

     case 5: 
      System.out.println("Goodbye!"); 
      exitPhoneBook = true; 
      break; 

     default: 
      System.out.println("Invalid option."); 
      System.out.print("Select a number: "); 
      break; 
     } 
    } 

} 

static void addContact(){ 
    //takes in four strings from user (first name, last name, phone number, email) 
} 

static void showContact(){ 
    //takes in two strings from user (first name, last name) 
} 

static void deleteContact(){ 
    //takes in two strings from user (first name, last name) 
} 

static void showAll(){ 
    //prints out all the contact in the hash table 
} 

} 
+0

そこで質問は何ですか? – Mureinik

+0

ハッシュテーブルの別のクラスを作成します。 'PhoneBook'クラスでこれをしないでください。 – SevenBits

+1

インスピレーションのためのリンク:[Javaハッシュテーブルの実装](https://codereview.stackexchange.com/questions/24116/hash-table-implementation-in-java)[Javaはどのようにハッシュテーブルを実装していますか?](https:///stackoverflow.com/questions/1647221/how-does-java-implement-hash-tables) – SevenBits

答えて

0

は、ここに私のコードとその中のいくつかのメモです。私は追加されたコードでコメントを追加する方法を知らない。

編集:私は多値を計算しました。私の問題は、今、同じインデックス/ハッシュキーを持つエントリを削除することです。例えば。同じキーを持つ3つの値があります。第1と第2の値は削除できますが、第3の値は削除できません。ここ

はそれのために私のコードです:

public void deleteContact(String key) { 
    int location = hashFunction(key); 
    if (contactsArray[location] == null) { //if the contact doesn't exist 
     System.out.println("Contact not found.\n"); 
     return; 
    } 

    if (contactsArray[location].key.equals(key)) { 
     contactsArray[location] = contactsArray[location].next; //if contact is on first item 
     System.out.println("Contact has been removed\n"); 
     return; 
    } 

    //If contact is not the first item of the same key 
    ContactList prev = contactsArray[location]; 
    ContactList curr = prev.next; 
    while (curr != null && ! curr.key.equals(key)) { 
     curr = curr.next; 
     prev = curr; 
    } 

    if (curr != null) { 
     prev.next = curr.next; 
     System.out.println("Contact has been removed"); 
     return; 
    } 
} 
関連する問題