2011-07-26 13 views
0

与えられた:?javaの - それはWidgetクラスまたはプリミティブ値を使用してウィジェットのカスタムマップを実装することが可能である(配列)

class Widget { 
    Object value; 
} 

interface WidgetMap { 
    void put(Widget key, Widget value); 
    Widget get(Widget key); 
} 

...どのように私はWidgetオブジェクトまたはプリミティブを使用してWidgetMapの実装に行きますか? 他のクラス(ツールキット、コレクション、JDKクラス)を使用しないでください。プリミティブ配列は許されますが、プリミティブ配列がなくてもよいでしょう。

+4

これは宿題であれば、それはただのコレクション –

+0

を使用していない場合、それはありません...、などのタグを付けなければなりませんが、十分に近い – vector

+0

あなたはどのように使用しなくてもJavaで何かを実装することができますjdkクラス? – Kal

答えて

4

これはWidgetMapのリンクリストとして実装されたマップです。ひどく効率的な、または有用なものとして私を攻撃することはありませんが、機能するはずです。私はあなたもremove機能が必要だと思っていますが、私はそれを練習問題として残します。これはまた、Widget.equals関数を適切にオーバーライドすると仮定していますが、その要件を持たないように修正するのは簡単です。

class BadMap implements WidgetMap{ 

    private WidgetMap next = null; 
    private Widget key = null; 
    private Widget val = null; 

    public void put(Widget _key, Widget _value){ 
     if(key == null){ 
      key = _key; 
      val = _value; 
     }else if(key.equals(_key)){ 
      val = _value; 
     }else if(next != null){ 
      next.put(_key, _value); 
     }else{ 
      next = new BadMap(); 
      next.put(_key, _value); 
     } 
    } 

    public Widget get(Widget _key){ 
     if(key != null && key.equals(_key)){ 
      return val; 
     }else if(next != null){ 
      return next.get(_key); 
     }else{ 
      return null; 
     } 
    } 

} 

Working example code.

+0

+1リンクリスト..巧妙なアイデア。 – Kal

関連する問題