比较多维HashMap的键

时间:2012-07-03 14:34:34

标签: java hashmap multidimensional-array

我正在开发一个包含许多自定义数据类的应用程序。我正在从两个不同的地方为我的应用程序输入输入,并希望在两者之间进行交叉引用,以帮助确保数据准确。

我有一个名为Map.Entry<String,HashMap<String, Integer>>的{​​{1}}对象,其中每个值都称为chromosome

我还有一个名为marker的自定义对象,它扩展了IndividualList individuals,其中每个HashMap<Integer,Individual>都有一个方法Individual,它返回非静态变量Genotype getGenotype()genotype扩展了Genotype

我想查看所有HashMap<String,String[]>key对象,并检查每个对象中是否存在任何 marker'中的关键字s Individual。每个genotype在其Individual中都有相同的密钥,因此我只需要测试一个genotype

我面临的问题是Individual要测试,因为它是Individual我不能简单地随意选择第一个元素,所以我现在正在做的就是取值将HashMap作为individuals然后将这些元素转换为Collection,然后将这些元素中的第一个(这是ArrayList<Individual>中的任意元素无序)获取{ {1}}然后获取此HashMap的{​​{1}}并将IndividualIndividual中的键进行比较。像这样:

genotype

但正如你所看到的,这是可怕的,丑陋的,太复杂了,所以我想知道是否有一种更简单的方式来实现我想要的东西,我错过了。

谢谢!

2 个答案:

答案 0 :(得分:0)

......这个问题确实令人困惑,难以理解,但我不清楚为什么你不只是使用

 individuals.values().iterator().next()

而不是new ArrayList<Individual>(individuals.values()).get(0)

(如果您可以使用第三方库,那么如果您使用Guava Table,那么您的代码可能会更加清晰,这是一个通用的,明显“更清洁”的替代{{1}披露:我为Guava做贡献。)

答案 1 :(得分:0)

为什么你不能随意选择HashMap的第一个元素?

individuals.entrySet().iterator().next()
individuals.values().iterator().next()

每次都可能是相同的条目。您应该确保地图不为空以避免异常。