2014-01-17 2 views
1

Я читал несколько сообщений о том, как хранить данные между временем выполнения, между HBase, Serialization и другими материалами, но есть ли способ сохранить карту (объект, набор diffObject) легко? Я смотрел видеоролики и читал сообщения, и я просто не мог обернуть вокруг себя мозг, также везде, где я храню данные, не может быть читаемым человеком, так как он имеет личную информацию об этом.Сохранение карты между Runtimes

+1

Я бы Google "сериализовать карту в Java" вы подойдете с такими материалами, как http://www.javajee.com/content/serialization-of-java-collection-objects-example и http://stackoverflow.com/questions/2747819/serializing-and-deserializing-a-map- с ключом как строка –

ответ

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(); 
    } 
} 
+1

Спасибо, это именно то, что мне нужно. +1000000000 – Brent

+0

Еще один вопрос, могу ли я сделать другое расширение, а затем .bin? – Brent

+0

Да, расширение вообще не имеет значения, вы можете выбрать любое имя и расширение файла, которые вы хотите. –

Смежные вопросы