我需要将信息文本文件加载到Java中。文本文件看起来像这样
"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中。
虽然您的输入看起来不完全像JSON,但您可能能够以一种简单的方式预处理[1]使其成为有效的JSON。因为JSON可能更广泛,因此比您的自定义格式得到更好的支持。
如果你的问题是JSON反序列化,那么看看Jackson或Gson,它们会将你的输入字符串转换成对象。
Jackson的简单例子:
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都有很多选项,可以以各种方式处理复杂的输入,例如,它们可以序列化和反序列化map,自定义对象,可以处理多态性(将不同的输入映射到不同类的对象)等等。
给定当前在您的问题中的输入,您可以简单地在前加和追加一个大括号,然后您将得到有效的JSON:
{
"reproduce": {
"VB": 7
},
"drill": {
"VB": 8,
"NN": 16
},
"subgross": {
"JJ": 2
},
"campsites": {
"NNS-HL": 1,
"NNS": 1
},
"streamed": {
"VBN": 1,
"VBD": 2
}
}