在HashMap中存储多个值并稍后获取

时间:2014-02-15 19:51:01

标签: java

我在HashMap中存储数据并在后期获取值。

HashMap<String, byte[]> hm = new HashMap<String, byte[]>();

现在,我想再存储两个值。例如,我想存储如下信息。有人可以告诉我,我怎么能修改Hashmap以这种方式?我还需要读取所有这些存储的值,并在后期找到它的一些值。

Key 1
    IPAddress
    RandomNumber
    Byte data
Key 2
    IPAddress
    RandomNumber
    Byte data

谢谢!

3 个答案:

答案 0 :(得分:2)

您必须使用以下属性创建一个类:

class MyData{
    private String IPAddress;
    private long RandomNumber;
    private byte[] data;

    //getters setters...
}

Map<String, MyData> hm = new HashMap<String, MyData>();

您可以将值设为:

MyData dataObj = hm.get("Key 1");
dataObj.getRandomNumber();

或直接

  hm.get("Key 1").getData();
  hm.get("Key 1").getRandomNumber();

迭代地图:

    Iterator it = hm.entrySet().iterator();
    while (it.hasNext()) {
        Map.Entry myDataEntry = (Map.Entry)it.next();
        System.out.println(myDataEntry.getKey() + " = " + myDataEntry.getValue());
        it.remove(); // avoids a ConcurrentModificationException
    }

从这里采取:Iterate through a HashMap

答案 1 :(得分:0)

创建一个类:

public class Key{
    int randomNumber;
    byte[] data;
    String ipAddress;
}

并将其存储为地图的值。

Map<String, Key> map;

希望它有所帮助。

答案 2 :(得分:0)

我为您的问题看到了两个选项:

1 - 制作一个bean来包装所有需要的内容(正如其他海报所建议的那样)

2 - 如果您希望为单个密钥设置更多值并向项目添加新库不是问题,则可以使用google guava库,尤其是Multimap类。在那里,您可以为单个键提供更多值。

尽管如此,我建议您编写一个java bean,将您想要的内容包装在一个对象中。