2012-01-25 9 views
3

パラメータとしてオブジェクトを取得し、オブジェクトのキーとStringの配列を比較したいと思います。マップを抽出します<K,V>渡された型パラメータのオブジェクト

オブジェクトのタイプが不在のためMap <String, byte[]>

String [] keys = {"a", "b"} 

申し訳あり、私は私がしたい正確に何を説明してみますので、ここに来る機会がなかったです。私はソケットを介してオブジェクトを受け取り、次にオブジェクトパラメータをメソッドreadObjectに渡します。

地図この方法では、「K」(キー)を分離して別のマップに挿入する必要があります。たとえば:

Map 1 (String [] = {1 map "a", "f", "c", "d"}; 

Map 2 (String [] {map = 2 "and", "i", "o", "k"}; 

main class 

{ //... 

S.getInputStream InputStream is =.....(); 

ObjectInputStream ois = new ......; 

MapObject mo = (MapObject) ois.readObject(); 

//-----> ReadObject (mo) 

... } 

public static MapObject readObject (MapObject mo) { 

String [] map1 = { "a", "f", "c", "d"}; 

は可能ですか? ----> MapObject mapi = mo;

彼は次のステップ

にバーストこの------->

Map map = (Map) mo; 

    for (Map.Entry entry : map.entrySet()) { 

    Entry.getKey key = String(); 

    byte [] value = entry.getValue(); 

    if (test.equals (entry.getKey())) 
    { 

      map.put (key, value); 
     } 

     } 

    } 
    public void readObject(Object parObj) 
    { 

     Here I want to extract the key from parObj comparable to do with the String [] 

     for example an if(). 

     finally extract unable to insert a value to put (Key, Value); 

    } 

私の難しさは、キーと値を抽出することにあります。

私の目的を達成するためのヒントやヒント私は質問を理解している場合

はあなたの注意と可用性

+0

パラメータの型を 'Map 'に変更するだけではどうですか? – Jeffrey

+0

私は説明する必要があります。 私はソケットオブジェクトを渡し、パラメータとしてStringとvalueをとるputメソッドを使用する必要があります。 – user1155232

+2

詳細を入力してよりよく説明する必要があります。現在の投稿は本当に混乱しています。 –

答えて

1

をありがとう、あなたは最初ので、あなたが、あなたはすべてのエントリを反復処理し、何でも行うことができ、地図interaceを使用することができますMapにオブジェクトをキャストする必要がありますあなたが必要です。

Map<String, byte[]> m = (Map)parObj; 
for (Map.Entry<String, byte[]> entry : m.entrySet()) { 
    String key = entry.getKey(); 
    byte[] value = entry.getValue(); 
    // do whatever you need with the key and value... 
} 
+0

私の助けに成功しました!ありがとう – user1155232

+0

@ user1155232私は助けてくれると嬉しく思います。 – yurib

0

これについての説明は少し役に立ちます。私はあなたが何をしているのか本当に理解していない。

地図のjavadocはここに私の最高のショットだ、と述べたhere

です。

また、@ Jeffreyの状態では、オブジェクトではなくマップを渡す必要があります。

public void class Foo{ 
    private String[] keys {"a", "b"}; 

    public void readObject(Map<String, byte[]> parObj){ 
     boolean foundAnyKey = false; 
     for(String key : keys){ 
      if(parObj.containsKey(key) == true){ 
       foundAnyKey = true; 
       byte[] values = parObj.get(key); 
       *<do something special with the values>* 
      } 
     } 

     if(foundAnyKey == true){ 
      *<do something special, 'cause you found a key>* 
     }//--for(...) 

    }//--readObject(...) 
}//--Foo{..} 
関連する問題