【问题标题】:Write LinkedHashMap to a text file? [duplicate]将 LinkedHashMap 写入文本文件? [复制]
【发布时间】:2016-08-25 23:09:39
【问题描述】:

如何从文本文件读取/写入 Map,特别是 LinkedHashMap?我尝试使用 Iterable 接口,但这不起作用,因为我有 Map 并且 Iterable 只能接受一个参数。

地图代码:

Map<String, String> m1 = new LinkedHashMap<String, String>(16, 0.75f, true);

m1.put("John Smith", "555-555-5555");
m1.put("Jane Smith", "444-444-4444");

我知道我必须创建一个 PrintWriter + BufferedWriter/PrintReader + BufferedReader 对象来读取/写入此文本文件,然后使用某些版本的 hasNext() 方法读取直到文件结束,我只是不确定如何。请帮忙!

编辑:我也不能为此使用 Serializable 接口,因为我正在尝试将 Map 写入文本文件,而不是单个条目,并且 Maps 没有 indexOf() 方法。

【问题讨论】:

  • 您只是想将每个Key, value 写入一个文本文件,例如用某些东西分隔?
  • 是的,这就是我想要做的。如果我可以将整个地图打印到文本文件中也可以。

标签: java dictionary collections io iterable


【解决方案1】:

因为您尝试将整个 Map 写入文件而不是单个条目,您可以像这样使用 writeObject()readObject()

Map<String, String> m1 = new LinkedHashMap<String, String>(16, 0.75f, true);

m1.put("John Smith", "555-555-5555");
m1.put("Jane Smith", "444-444-4444");

//Write to file
FileOutputStream fout = new FileOutputStream("file.out");
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(m1);

//Read from file
FileInputStream fin = new FileInputStream("file.out");
ObjectInputStream ois = new ObjectInputStream(fin);
Map<String, String> m2 = (LinkedHashMap<String, String>) ois.readObject();

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-03
    • 2017-10-24
    • 1970-01-01
    • 2020-10-01
    • 2019-08-14
    • 2015-04-22
    • 1970-01-01
    • 2019-11-01
    相关资源
    最近更新 更多