我是Java新手,目前正在用Java重写Perl代码。在Perl中,我有一个Hash of Hash,比如
$hashref->{index1}->{index2}->{index3} = $value;在这里,我将index1、index2和index3与上述散列一起存储在3个不同的散列中。此外,Index1和index2是long类型,而index3是String类型。
现在我想用Java重写类似的东西。所以我想出了两种方法
1)HashMap<Long, HashMap<Long ,HashMap<String,String> >>
2)HashMap<String, String> //In this approach i concatenate index1,index2 and index3 using _ and make a single string我想知道哪种方式是有效的,因为index1最多100键,index2最多300键,index3最多700键。
发布于 2012-02-15 11:50:41
首先,让我们讨论#2
例如,考虑3组索引:("12","13_13“和"14")和("12_13","13”和"14")。它们都产生了相同的连接键。
例如,你不能很容易地做与"keys %{$hash->{index1}}“等价的Java --找到存储在index1下的二级散列的所有关键字。这是可行的,但难度更大。或"delete $hash->{index1}".
如果这两个考虑因素不会让你感到困扰,那么对1级HashMap使用一个连接的键是可以的。
如果他们这样做了,你需要做#1 -一个相当健壮的实现已经在SO上发布了:“Java equivalent of Perl's hash”。请注意,这样的实现不是微不足道的,因此连接1级索引的替代方法是一个非常好的替代方案。
https://stackoverflow.com/questions/9287549
复制相似问题