Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
K和int Java之间的操作数类型不兼容_Java - Fatal编程技术网

K和int Java之间的操作数类型不兼容

K和int Java之间的操作数类型不兼容,java,Java,我正在制作一个具有线性探测碰撞的哈希表。我试图将哈希表的元素添加到集合或集合中。我设置哈希表的方式是,它是一个包含泛型类型K的“键”和泛型类型V的“值”的节点数组。表中没有节点的索引为空,但最初有节点但被删除的索引标记为包含新节点(-1,-1)的节点。在打印哈希表时,我希望避免打印已删除的点(包含键-1的索引)。以下是相关代码: 要添加到集合或集合的方法(在哈希表类中) @覆盖 公共集密钥集(){ Set s=新的HashSet(); 对于(inti=0;i不要使用-1作为“特殊键值”,因为您的

我正在制作一个具有线性探测碰撞的哈希表。我试图将哈希表的元素添加到集合或集合中。我设置哈希表的方式是,它是一个包含泛型类型K的“键”和泛型类型V的“值”的节点数组。表中没有节点的索引为空,但最初有节点但被删除的索引标记为包含新节点(-1,-1)的节点。在打印哈希表时,我希望避免打印已删除的点(包含键-1的索引)。以下是相关代码:

要添加到集合或集合的方法(在哈希表类中)

@覆盖
公共集密钥集(){
Set s=新的HashSet();
对于(inti=0;i不要使用-1作为“特殊键值”,因为您的键必须是K类型(K可以是任何类型:字符串、日期等)


改为使用null。

如果您的
哈希表
包含带字符串的
节点
对象,该怎么办?好的,让我尝试将已删除的节点值设置为新节点(null,null),而不是新节点(-1,-1)。为什么不在删除
节点时将其从表中删除?
@Override
    public Set<K> keySet() {
        Set<K> s = new HashSet<K>();
        for(int i=0; i<this.hashtable.length; i++) {
            if(this.hashtable[i] != null && this.hashtable[i].key != -1)
                s.add(this.hashtable[i].key);
        }
        return s;
    }

    @Override
    public Collection<V> values() {
        LinkedList<V> l = new LinkedList<V>();
        for(int i=0; i<this.hashtable.length; i++) {
            if(this.hashtable[i] != null && this.hashtable[i].key != -1)
                l.add(this.hashtable[i].val);
        }
        return l;
    }
private final class Node<K extends Comparable<? super K>, V>  {
        public K key;
        public V val;

        public Node() {
            this.key = null;
            this.val = null;
        }

        public Node(K theKey, V theValue) {
            this.key = theKey;
            this.val = theValue;
        }
    }
public static void main(String[] args) {
        MyJHUHashMap<Integer, String> m = new MyJHUHashMap<>();
        m.put(1, "1!");
        m.put(2, "2!");
        m.put(3, "3!");
        m.put(4, "4!");
        m.put(5, "5!");
        m.put(6, "6!");
        m.put(7, "7!");
        m.put(8, "8!");
        m.put(9, "9!");
        m.put(10, "10!");
        m.put(11, "11!");
        m.put(12, "12!");
        m.put(13, "6!");
        m.put(14, "7!");
        m.put(15, "8!");
        m.put(16, "9!");
        m.put(17, "10!");
        m.put(18, "11!");
        m.put(19, "12!");
        m.put(20, "10!");
        m.put(21, "11!");
        m.put(22, "12!");
        m.put(23, "23!");
        System.out.println(m.get(4));
        System.out.println(m.get(12));
        System.out.println(m.get(25));
        System.out.println(m.containsKey(22));
        System.out.println(m.containsKey(35));
        m.remove(23);
        m.remove(18);
        //m.put(7, 7);
        System.out.println(m.hashtable.length);
        System.out.println(m.size());
        for(int i=0; i<m.hashtable.length; i++) {
            if(m.hashtable[i] != null && m.hashtable[i].key != -1)
                System.out.print(m.hashtable[i].key + " ");
        }
    }