我在HashMap中存储数据并在后期获取值。
HashMap<String, byte[]> hm = new HashMap<String, byte[]>();
现在,我想再存储两个值。例如,我想存储如下信息。有人可以告诉我,我怎么能修改Hashmap以这种方式?我还需要读取所有这些存储的值,并在后期找到它的一些值。
Key 1
IPAddress
RandomNumber
Byte data
Key 2
IPAddress
RandomNumber
Byte data
谢谢!
答案 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
}
答案 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,将您想要的内容包装在一个对象中。