加载字典文本文件到Java



我需要将信息文本文件加载到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
  }
}

最新更新