我一直在阅读一些关于如何在运行时之间,HBase,序列化和其他内容之间存储数据的帖子,但是有没有办法轻松存储Map(Object,difObject)?我一直在看视频和阅读帖子,我只是无法将我的大脑包裹起来,无论我在哪里存储数据都不可能是人类可读的,因为它有个人信息。
答案 0 :(得分:3)
使用java.io.ObjectOutputStream
和java.io.ObjectInputStream
来持久化Java对象(在您的情况下:写/读Map
)。确保您持久存在的所有对象都实现Serializable
。
示例:编写数据(编组)
Map<String, Set<Integer>> map = new HashMap<String, Set<Integer>>();
map.put("Foo", new HashSet<Integer>(Arrays.asList(1, 2, 3)));
map.put("Bla", new HashSet<Integer>(Arrays.asList(4, 5, 6)));
File file = new File("data.bin");
ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(file)));
try {
out.writeObject(map);
out.flush();
} finally {
out.close();
}
读取存储的数据(解组)
File file = new File("data.bin");
if (file.exists()) {
ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(new FileInputStream(file)));
try {
Map<String, Set<Integer>> read = (Map<String, Set<Integer>>) in.readObject();
for (String key : read.keySet()) {
System.out.print(key + ": ");
Set<Integer> values = read.get(key);
for (Integer value : values) {
System.out.print(value + " ");
}
System.out.println();
}
} finally {
in.close();
}
}