我正在开发一个包含许多自定义数据类的应用程序。我正在从两个不同的地方为我的应用程序输入输入,并希望在两者之间进行交叉引用,以帮助确保数据准确。
我有一个名为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}}并将Individual
与Individual
中的键进行比较。像这样:
genotype
但正如你所看到的,这是可怕的,丑陋的,太复杂了,所以我想知道是否有一种更简单的方式来实现我想要的东西,我错过了。
谢谢!
答案 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()
每次都可能是相同的条目。您应该确保地图不为空以避免异常。