【问题标题】:HashMap - operationsHashMap - 操作
【发布时间】:2014-10-15 09:19:11
【问题描述】:

我有这种情况,我有 5 个人:P1、P2、P3、P4、P5。

每个人都有 3 个比较标准:A、B、C(由 5.x 等浮点数组成,因此 A 可以是 5.31.2 等,B 可以是 1.8 等,C @987654325 @ 等,最小值为0.0,最大值为10.0)。

每个标准都有子标准(例如,6 个子标准也由浮点数组成,如 2.x):A1、A2、A3、A4、A5、A6 / B1、B2、B3、... 你明白了。

如何将这 5 个人放入 HashMap(或任何其他集合)以及他们各自的标准和子标准:

HashMap<String, List<Float>> person = new HashMap<String, List<Float>>();

并执行以下操作:

  1. 从每个人 (A) 中取出第一个标准并从中取出最小值/最大值,这意味着 P1-A、P2-A、P3-A、P4-A、P5-A 将保持不变可能是 P1-A、P2-A、P3-A,以及它们各自的子标准编号 P1-A-A1、P1-A-A2、P1-A-A3... / P2-A-A1、P2-A- A2、P2-A-A3 等等。

  2. 因为 min/max 已经出局,剩下的标准 P1-A、P2-A、P3-A 意味着只有 P1、P2、P3 仍在游戏中,P4 和 P5 出局。接下来的操作是计算P1准则A子准则A1、P2准则A子准则A1和P3准则A子准则A1之间的平均值。这应该为每个子标准计算,如下所示:

    result1 = (P1-A-A1 + P2-A-A1 + P3-A-A1)/3
    
    result2 = (P1-A-A2 + P2-A-A2 + P3-A-A2)/3
    

    标准 A 总共 6 个。

  3. 对于标准 B 和 C,从第 1 点和第 2 点开始的操作相同。

  4. 我需要为每个人 P1...P5 注入标准 A、B、C 和子标准 A1...A6、B1...B6、C1...C6 的数字,没有A 的值与 A1、A2...A6、B1...等的值之间的联系,最终只计算操作。

我认为最好的方法是创建以标准为键、子标准为值的个人 hasmaps。

【问题讨论】:

  • 不,它是供个人使用的
  • 这显示了明显的物体恐惧症。看来你应该创建一个合理的类结构。
  • 这听起来太抽象了,不能“供个人使用”。
  • @Holger 但您不是总是需要在您的个人生活中注入大量标准(原文如此)A、B 和 C?我知道我是……
  • 是的,还是没人知道

标签: java math collections hashmap tuples


【解决方案1】:

我看不到您需要通过密钥访问特定人员的位置,因此您不需要HashMap,只需List

但是条件是通过键引用的,所以你应该这样做:

enum CriteriaKey {
   A, B, C
}

enum SubcriteriaKey {
   ...
}

class Criteria implements Comparable<Criteria> {
  private Float value;
  private Map<SubriteriaKey, Subcriteria> ...
}

class Subcriteria implements Comparable<Subcriteria> {
  private Float value;
  ...
}

class Person {
  private Map<CriteriaKey, Criteria> ...
}

然后您在这些类中实现执行操作的方法。

【讨论】:

  • 好吧,我认为放入 HashMap 会更容易。
  • 我不知道该怎么做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-23
相关资源
最近更新 更多