2016-05-04 12 views
0

最近、私はハッシュを使って練習し、値を格納するためにテーブル内のリンクリストを使用しようとしています。私はコンセプトを理解していますが、それを実践するのに問題があり、私がオンラインで探しているものを見つけることができないようです。 のは、私は、このような私のような方法たいなど、モニター、マウス、としてコンピュータのようなものを格納するハッシュテーブルを使用していたとしましょう:たとえばハッシュテーブルとバケットハッシュの使い方

boolean addMonitor(String id, String description, double price, int units, String size) 

boolean addMouse(String id, String description, double price, int units, int buttons) 

を私はしないでくださいこれらのメソッドを使用してハッシュテーブルに格納する方法を理解する。私は明らかに、後でそれぞれの値にアクセスして値を変更するために他の方法を使用したいと思うでしょう。どんな助けもありがとうございます。ありがとうございました。

答えて

0

名前が "table"であっても、HashTableはカラムを持つ "データベーステーブル"と似ていないので、各カラムに値が格納されています...ハッシュテーブルをデータベーステーブルとして使いたいと思うようです。

ハッシュテーブルストアオブジェクト!だからあなたのメソッドは次のように良くなります。

public class Example { 

    public static void main(String[] args) { 
     ItemStore store; 
     Monitor monitor; 
     Mouse mouse; 

     store = new ItemStore(); 
     monitor = new Monitor(); 
     monitor.id = 2; 
     monitor.price = 6; 

     mouse = new Mouse(); 
     mouse.id = 7; 
     mouse.buttons = 3; 

     store.addItem(monitor); 
     store.addItem(mouse); 

     System.out.println(store.getItem(2).price); // = 6 
     System.out.println(((Monitor) store.getItem(2)).dpi); 
     System.out.println(((Mouse) store.getItem(7)).buttons); //Downcasting ... = 3 
    } 
    public static class Item { 
     String id; 
     String description; 
     int price; 
     // common attributes here! 
    } 

    public static class Monitor extends Item { 
     private int dpi; 
     // monitor particular atributes here!! 
    } 

    public static class Mouse extends Item { 
     private int buttons; 
     // mouse particular attributes here!!! 
    } 


    public static class ItemStore { 
     private Hashtable<String, Item> table = new HashTable<>(); 

     public boolean addItem(Item item) { 
      this.table.put(item.getId(), item); 
     } 

     public Item getItem(String id) { 
      return this.table.get(id); 
     } 
    } 
} 
+0

ハッシュテーブルで、私はあなたが言う一つのオブジェクトを持つことができるようにリンクされたリストを指すでしょうオブジェクトを格納できると思ったが、そのオブジェクトが他の束を持っていますデータ? – MarkMAM

+0

はい、私の例(私が信じる)は、それをデモストレートすることができますが、より簡略化された(カプセル化された)方法で!! ... –

+0

申し訳ありませんが、私はトップで提供した方法を使用できますか? – MarkMAM

関連する問題