我正在使用一个java哈希表链(一个按键值的hascode排序的数组,其中索引是链表)。这是测试代码的哈希表的初始化:
Map<String, Integer> myMap = new HashtableChain<String, Integer>();
myMap.put( "ACTG", 120 );
myMap.put( "ABC", 123 );
myMap.put( "XYZ", 123 );
myMap.put( "HTML", 404 );
myMap.put( "LOL", 999 );
myMap.put( "OMG", 911 );
Map<String, Integer> otherMap =
new HashtableChain<String, Integer>();
otherMap.put( "ARC", 121 );
otherMap.put( "ACT", 102 );
otherMap.put( "AUT", 109 );
myMap.putAll( otherMap );
System.out.println( "myMap pairs:" );
System.out.println( myMap );
这是它应该输出的内容:
myMap pairs:
[[OMG=911][LOL=999], [ARC=121], [AUT=109, ABC=123], [AUT=109, ABC=123], [ACTG=120], [XYZ=123], [CIT=245], [HTML=404], [ACT=102], ]
使用这种方法:
public void putAll( Map<? extends K, ? extends V> map ){
Iterator<? extends K> nextKey = map.keySet().iterator();
Iterator<? extends V> nextValue = map.values().iterator();
while(nextKey.hasNext() && nextValue.hasNext()){
put((K)nextKey.next(), (V)nextValue.next());
}
}
上述方法中使用的方法:
public Set<K> keySet(){
Set<K> coll = new HashSet<K>();
for(int i = 0; i < table.length; i++){
if(table[i] != null){
for(Entry<K, V> nextItem : table[i]){
coll.add(nextItem.key);
}
}
}
return coll;
}
public Collection<V> values(){
Collection<V> coll = new LinkedList<V>();
for(int i = 0; i < table.length; i++){
if(table[i] != null){
for(Entry<K, V> nextItem : table[i]){
if(nextItem.value != null){
coll.add(nextItem.value);
}
}
}
}
return coll;
}
这输出:
[[OMG=911][LOL=999], [ARC=109], [AUT=102, ABC=123], [AUT=102, ABC=123], [ACTG=120], [XYZ=123], [CIT=245], [HTML=404], [ACT=121], ]
不知道我做错了什么,或者是否有其他方法可以做到这一点。感谢所有评论。