【问题标题】:Parsing and looking up a string with variable number of fields java解析和查找具有可变字段数的字符串java
【发布时间】:2013-11-09 22:29:05
【问题描述】:

我必须读取文件并存储值,然后再进行查找。

例如,文件如下所示:

Gryffindor = 5
Gryffindor.Name.Harry = 10
Gryffindor.Name.Harry.Cloak.Black = 15
and so on...

我需要存储这些(我在想一张地图)。稍后,我需要处理每个字符并查找此地图以分配它们点。假设我遇到哈利,我知道他来自格兰芬多,他穿着一件蓝色斗篷。我将不得不将此地图(或我使用的任何对象)查找为

Gryffindor.Name.Harry.Cloak.Blue

这应该不会给我任何回报。然后我需要退回到名称和查找

Gryffindor.Name.Harry

那应该给我 10 分。

同样,如果我寻找罗恩,(假设他穿着黑色),

Gryffindor.Name.Ron.Cloak.Black

应该什么都不返回,回退到

Gryffindor.Name.Ron

什么都没有,回到

Gryffindor

应该返回 5。

存储和读取这些数据的优雅方式是什么?我正在考虑使用映射来存储键值对,然后使用 switch case 来读取它们。你会怎么做?

【问题讨论】:

  • 之前有人提到过Properties,它基本上将映射序列化和反序列化到/从人类可读文件。如果这不是练习,请看看它是如何工作的。
  • 您在使用地图时遇到了什么问题?或者你有没有尝试过什么?
  • 我什么都没试过。在开始实施之前,我一直在寻找想法。

标签: java string parsing


【解决方案1】:

Java 有一个内置的Properties 类,它实现了Map,可以读写您描述的数据格式(参见该类的load()store() 方法)。

那里没有任何东西可以实现您的“回退到更高级别的密钥”功能,因此您需要编写一个方法,在 Properties 实例中查找所需密钥下的数据,并不断尝试如果没有找到相同密钥的较短版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多