我需要将信息的文本文件加载到Java中。 Text文件看起来像这样
"reproduce": {
"VB": 7
},
"drill": {
"VB": 8,
"NN": 16
},
"subgross": {
"JJ": 2
},
"campsites": {
"NNS-HL": 1,
"NNS": 1
},
"streamed": {
"VBN": 1,
"VBD": 2
}
它基本上是一个包含一些标签的大量单词集合。我需要将此信息保存在某种Java数据结构中,以便程序可以搜索和检索给定单词的标记统计信息。
根据我的阅读,使用一种HashMap是最好的主意吗?类似的东西:
Map<KeyType, List<ValueType>>
这是个好主意吗?我该如何从文本文件中扫描这些数据?我可能会找到一种方法将字典打印到文本文件中,这样可以更容易地扫描到Java中。
答案 0 :(得分:1)
虽然您的输入看起来与JSON不完全相同,但您可以通过简单的方式对其进行预处理[1]以使其成为有效的JSON。因为JSON可能更广泛,因此比您的自定义格式更受支持。
如果您的问题是JSON反序列化,那么请查看Jackson或Gson,它会将您的输入字符串转换为对象。
杰克逊的简单例子:
ObjectMapper mapper = new ObjectMapper(); // can reuse, share globally
Map<String,Object> data = mapper.readValue(new File("file.json"), Map.class);
// process data further here ...
Jackson和Gson都有很多选择,可以通过各种方式处理复杂的输入,例如:他们可以对地图进行序列化和反序列化,自定义对象可以处理多态(将不同输入映射到不同类的对象)等等。
根据您的问题中的输入,您可以简单地添加和附加一个大括号,并且您将拥有有效的JSON:
{
"reproduce": {
"VB": 7
},
"drill": {
"VB": 8,
"NN": 16
},
"subgross": {
"JJ": 2
},
"campsites": {
"NNS-HL": 1,
"NNS": 1
},
"streamed": {
"VBN": 1,
"VBD": 2
}
}