【问题标题】:java - how to make decision based on stringjava - 如何根据字符串做出决定
【发布时间】:2011-07-22 14:08:14
【问题描述】:

如果您有类似volume-7,notcontact-xxxx,not_lightlevel-1280.0, 的字符串,并且此字符串可能会因其他选项而异,例如振动、亮度、屏幕亮度等...但格式相同...(设置值、设置-值...)

根据您对这些设置的当前信息做出决定的最佳方式是什么? (即通过根据我拥有的当前上下文信息检查预定义字符串来返回真或假)

假设您有当前的上下文信息...即当前的音量、振动器设置、亮度、屏幕亮度等,并且您想将其与预定义的字符串进行比较,例如我写的以上,

你会怎么做?

你会解析字符串并检查每一种可能性吗?虽然可行,但听起来不是很吸引人..

我可以使用决策树吗?如果是,有人可以告诉我该怎么做吗?

谢谢

【问题讨论】:

  • 我会尝试从“真实对象”和所需语义的角度来考虑这个问题:上面的字符串只能被认为是一个 [序列化] 实现(例如地图)细节。

标签: java string parsing decision-tree


【解决方案1】:

我首先想到的是把它解析成HashMap

如果你事先知道所有的键,你也可以使用 POJO。 (您仍然需要使用反射填充字段,但可以保证所有其他操作的编译时类型安全。)

(我可能完全误解了你的问题,但我找不到你描述的问题与决策树之间的任何联系。)

【讨论】:

  • HashMap 也是我的第一个想法,但我必须遍历地图并检查每个设置/值。我实质上要问的是是否有更聪明的方法可以避免所有 if 语句
  • @kkudi 这取决于您的比较逻辑。您想确定设置 A 是否等于设置 B?或者它是否大于另一个?你有部分字符串吗?如果这样做,您是否只是忽略未出现在字符串中的键?
  • @biziclop 否。字符串中的每个“设置”都会与其等效的当前设置进行比较。该字符串可能不包含所有上下文信息,而仅包含一个子集。但是由于我不知道字符串是由哪些“设置”组成的,所以我必须检查每个设置。
  • @kkudi 您可以简单地遍历映射的条目并将每个条目与另一个映射的相应值进行比较。 (Map.keySet()Map.entrySet() 是相关方法。)这样您的代码中就不需要多个 if 语句。
  • @biziclop 啊,我从来没有这样想过!所以基本上我的一张地图将使用所有设置及其各自的当前值“静态”定义。另一个是我从我拥有的字符串中得到的地图
猜你喜欢
  • 2013-12-16
  • 2014-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多