Извлечь картупередан объект параметров типа - PullRequest
3 голосов
/ 25 января 2012

Я получаю объект в качестве параметра и хочу сравнить ключ объекта с массивом строк.

объект имеет тип Map <String, byte[]>

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

Извините заОтсутствие, у меня не было возможности приехать сюда, поэтому я постараюсь объяснить, что именно я хочу.Я получаю объект через сокет, затем перехожу через параметр объекта к методу readObject.

Map В этом методе я должен отделить "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;

Он разрывается на следующем шаге

this ------->

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 ]

1 голос
/ 25 января 2012

если я понял вопрос, вам сначала нужно привести объект к 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 голосов
/ 25 января 2012

Разъяснение этого может быть немного полезным; Я не очень понимаю, что вы после.

Javadoc для карты здесь

Тем не менее, вот мой лучший выстрел.

Кроме того, как утверждает @Джеффри, вы должны передавать карту, а не объект.

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