我有一个客户端 - 服务器架构,其中有一个客户端连接到中央服务器,然后我将此中央服务器连接到两个服务器(Server1和Server2)。我使用Serializable类将Map对象从客户端传递给CentralServer。然后,在CentralServer中,我想获取此Map对象并从中获取Key和值。为此,我使用以下代码:
public void readObject(Map<String, byte[]> parObj)
{
for (String key : keys)
{
if(parObj.containsKey(key) == true){
foundAnyKey = true;
byte[] values = parObj.get(key);
//Do Something here
}
}
if(foundAnyKey == true){
//Do something here
}
}
如果我错了,请纠正我。我这样做的第一部分是获得关键和价值吗?
我的问题的第二部分是如何将以“a-f”开头的密钥发送到Server1,将以“f-z”开头的密钥发送到Server2。我怎么能这样做?
在我的主要内容中,我有以下代码:
System.out.println("Starting Server");
ServerSocket ss = new ServerSocket(7776);
System.out.println("Server Started");
Socket s = ss.accept();
InputStream is = s.getInputStream();
ObjectInputStream ois = new ObjectInputStream(is);
MapObject mo = (MapObject) ois.readObject();
s.close();
这是我将MapObject格式化为客户端的地方。现在我想从这个对象中获取密钥和值。 最好的问候
答案 0 :(得分:1)
如果您对“有序”地图提出疑问,那么您可以查看 LinkedHashMap (如果您关心插入顺序)或 TreeMap (您在其中定义compareTo()方法有一个排序规则)。 然后,您可以使用方法
简单地循环键Set keys = map.keySet();
然后你可以迭代(先前订购的)一组键。
答案 1 :(得分:0)
您能澄清问题中的问题吗?你说你想获得密钥和价值,但看起来你在代码中做了两件事。你能指出代码没有做你想做的事情吗?