提取Map <k,v>传递类型参数的对象</k,v>

时间:2012-01-25 00:11:05

标签: java map hashmap

我得到一个对象作为参数,并希望将对象的键与一个字符串数组进行比较。

对象的类型为Map <String, byte[]>

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

对不起,我没有机会来这里,所以我会尽力解释我想要的东西。我通过套接字接收一个对象,然后通过对象参数读取方法readObject。

Map在这个方法中,我必须分离“K”(键)并将它们插入到不同的Map中。例如:

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"};

有可能吗? ----&GT; MapObject mapi = mo;

他在下一步中爆发

这-------&gt;

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);

    }

我的困难在于提取关键和价值。

有哪些建议或提示达到我的目标?

感谢您的关注和可用性

2 个答案:

答案 0 :(得分:1)

如果我理解了这个问题,你首先需要将对象转换为Map,这样你就可以使用map interace,然后你可以迭代所有的条目并做你需要的任何事情。

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...
}

答案 1 :(得分:0)

对此进行澄清可能会有所帮助;我真的不明白你在追求什么。

Map的javadoc是here

那就是说,这是我最好的一击。

另外,正如@Jeffrey所说,你应该传递一个Map,而不是一个Object。

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{..}