【发布时间】:2020-06-06 17:06:12
【问题描述】:
我有一个使用哈希映射的项目。我的目标是计算每个独特特征的存活率。
假设我有一个 ArrayList 来存储枚举的特征。 因此,这个 ArrayList 可以包含多个重复的特征。
ArrayList<Object> allCharac = new ArrayList<Object>();
[MALE,FEMALE,FEMALE,MALE,FEMALE]
ArrayList<Object> characSurvive = new ArrayList<Object>();
[MALE,FEMALE]
因此,存活率是:
male:0.50 = 1/2 (characSurvive/allCharac)
female:0.33 = 1/3
我可以使用哈希映射来计算 ArrayList 中每个唯一值的出现。但是,如何使用每个哈希图中的值来计算比率?非常感谢任何帮助。
Map<Object,Integer> allCharacterCounts = new HashMap<Object,Integer>();
for (Object element: allCharac) {//from the above ArrayList
if (allCharacterCounts.containsKey(element)) {
allCharacterCounts.put(element, allCharacterCounts.get(element)+1);
} else {
allCharacterCounts.put(element, 1);
}
}
【问题讨论】:
-
什么是
ArrayList<Oject,Integer> charac = new ArrayList<Object,Integer>();?我们怎样才能拥有ArrayList<Oject,Integer>?不应该是男性和女性的字符串吗? -
仍然,这怎么可能?我们有像这样的
ArrayList<E>,其中 E 可以是任何Object类型。但是,在您的情况下,ArrayList<E, D>是什么D类型。我们在 Java 中没有这样的东西 -
应该是
ArrayList<String> charac = new ArrayList<String>();这样。其次,for (Object element: allCharac) {中的allCharac是什么。编辑您的问题并添加关于allCharac的内容。 -
优秀。最后一件事解释了有关比率部分的一些信息。你如何计算它的价值?
-
太棒了!!现在您在
allCharacterCounts中有男性和女性的总数。您可以简单地根据 MALE 和 FEMALE 迭代其值并除以1。characSurvive中只有 MALE 和 FEMALE。在您的情况下,您不需要characSurvive。它可以简单地通过除以1来完成,例如System.out.println(allCharacterCounts.get("MALE") / 1);