我得到一个对象作为参数,并希望将对象的键与一个字符串数组进行比较。
对象的类型为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);
}
我的困难在于提取关键和价值。
有哪些建议或提示达到我的目标?
感谢您的关注和可用性
答案 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{..}