从Map对象获取密钥和值,并将它们发送到不同的服务器

时间:2012-01-26 22:21:01

标签: java sockets socket.io

我有一个客户端 - 服务器架构,其中有一个客户端连接到中央服务器,然后我将此中央服务器连接到两个服务器(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格式化为客户端的地方。现在我想从这个对象中获取密钥和值。 最好的问候

2 个答案:

答案 0 :(得分:1)

如果您对“有序”地图提出疑问,那么您可以查看 LinkedHashMap (如果您关心插入顺序)或 TreeMap (您在其中定义compareTo()方法有一个排序规则)。 然后,您可以使用方法

简单地循环键
Set keys = map.keySet();

然后你可以迭代(先前订购的)一组键。

答案 1 :(得分:0)

您能澄清问题中的问题吗?你说你想获得密钥和价值,但看起来你在代码中做了两件事。你能指出代码没有做你想做的事情吗?