[英]Comparing keys of a multi-dimensional HashMap
我正在使用具有许多自定义数据类的应用程序。 我正在从2个不同的地方获取我的应用程序的输入,并希望在这两个位置之间进行交叉引用以帮助确保数据的准确性。
我有一个名为chromosome
的Map.Entry<String,HashMap<String, Integer>>
对象,其中每个值称为一个marker
。
我还有一个自定义对象,称为IndividualList individuals
,该对象扩展了HashMap<Integer,Individual>
,其中每个Individual
都有一个方法Genotype getGenotype()
,该方法返回非静态变量genotype
。 Genotype
扩展了HashMap<String,String[]>
我想看看每个key
我所有的marker
物,并检查他们每个人是否存在如在任何一个关键Individual
的genotype
。 每个Individual
的genotype
都有相同的密钥,因此我只需要测试一个Individual
。
我面临的问题是要测试的Individual
,因为它是一个HashMap
所以我不能简单地随意选择第一个元素,所以我目前正在做的工作是将individuals
的值作为一个Collection
然后将它们转换为ArrayList<Individual>
然后取第一这些元素(其仅仅是一个任意一个作为HashMap
是无序的),以获得一个Individual
然后采取这一Individual
的genotype
和比较marker.getKey()
与在所述键genotype
。 像这样:
for(Map.Entry<String, MarkerPosition> marker : chromosome.getValue().entrySet())
if(!(new ArrayList<Individual>(individuals.values()).get(0)
.getGenotype().containsKey(marker.getKey())))
errors.add("Marker " + marker.getKey() + " is not present in genotype");
但是,正如您所看到的那样,这是可怕的,丑陋的,而且过于复杂,因此我想知道是否有一种更简单的方法来实现我所缺少的目标。
谢谢!
为什么不能随意选择HashMap的第一个元素?
individuals.entrySet().iterator().next()
individuals.values().iterator().next()
每次都可能是同一条目。 您应确保映射不为空以避免出现异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.