java - 哈希表链 puttall()

标签 java

我正在使用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], ]

不确定我做错了什么,或者是否有其他方法可以做到这一点。感谢所有评论。

最佳答案

像这样修改你的代码:

Iterator<? extends K> nextKey = map.keySet().iterator();
    while(nextKey.hasNext()){
        put((K)nextKey.next(), map.get(nextKey.next()));
    }

关于java - 哈希表链 puttall(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18425217/

相关文章:

java - org.glassfish.jersey.servlet.ServletContainer ClassNotFoundException

java - 如何在 Java 中获取项目路径?

java - MockMvc - 预期状态 :<200> but was:<302>

java - 跟踪 Java 中窗口打开的时间

java - 从服务器读取输入时,我的程序挂起。Java

java - Android Studio (IntelliJ) 错误信息

java - 监听按键事件会阻止按键工作

java - 如何避免连接器在 Open Office/Libre Office Draw 中移动形状

用于报告编写器的 Java API

java - 比较jpa中的时间戳列而不丢失微秒