HashMap - 操作

时间:2014-10-15 09:19:12

标签: java math collections hashmap tuples

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

每个人都有3个标准要比较:A,B,C(由5.x等浮点数组成,所以A可以是5.31.2等,B可以是{{ 1}}等,C 1.8等,最小值为8.9,最大值为0.0

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

如何将这5个人放在HashMap(或任何其他集合)中,并附有各自的标准和子标准:

2.x

并执行以下操作:

  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. 因为最小值/最大值出局,所以剩下的标准P1-A,P2-A,P3-A意味着只有P1,P2,P3仍然在游戏中,P4和P5都没有了。下一步操作是计算P1标准A亚标准A1,P2标准A亚标准A1和P3标准A亚标准A1之间的平均值。这应该计算每个子标准,如下所示:

    HashMap<String, List<Float>> person = new HashMap<String, List<Float>>();
    
    标准A总共

    6。

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

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

  5. 我认为最好的方法是将标准作为关键字和子标准作为值创建人格图。

1 个答案:

答案 0 :(得分:0)

我无法通过密钥查看您需要访问特定人员的位置,因此您不需要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> ...
}

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