小编Dan*_*Liu的帖子

为什么不直接比较e.key而不是将其分配给变量?

在阅读源代码时HashMap,我遇到了以下代码public V put(K key, V value):

for (Entry<K,V> e = table[i]; e != null; e = e.next) {
    Object k;
    if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
        V oldValue = e.value;
        e.value = value;
        e.recordAccess(this);
        return oldValue;
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么分配e.keyk比较?为什么不直接比较,如:

if (e.hash == hash && (e.key == key || key.equals(e.key))
Run Code Online (Sandbox Code Playgroud)

-------------------更新------------------------

根据@seand的回答,我做了更详细的调查:

import com.test.Test;

    public class Main {
        public static void main(String[] args) {
            Test t …
Run Code Online (Sandbox Code Playgroud)

java hashmap

12
推荐指数
1
解决办法
258
查看次数

为什么sun jdk源代码不包含javax.servlet包?

我试图在jdk源代码中找到javax.servlet包的源代码,但似乎jdk不包含该包.我在哪里可以下载包裹?

java

9
推荐指数
1
解决办法
3168
查看次数

为什么在java泛型中仅在运行时检查String类型返回值

我在阅读Thinking in java,Generics.在一个例子中(在"边界的行动"段落)

public class GenericHolder<T> {
    private T obj;
    public void set(T obj) { this.obj = obj; }
    public T get() { return obj; }
    public static void main(String[] args) {
        GenericHolder<String> holder =
        new GenericHolder<String>();
        holder.set("Item");
        String s = holder.get();
    }
} ///:~


public void set(java.lang.Object);
    0: aload_0
    1: aload_1
    2: putfield #2; //Field obj:Object;
    5: return
public java.lang.Object get();
    0: aload_0
    1: getfield #2; //Field obj:Object;
    4: areturn
public static void main(java.lang.String[]);
    470 Thinking in Java Bruce …
Run Code Online (Sandbox Code Playgroud)

java generics

2
推荐指数
1
解决办法
140
查看次数

标签 统计

java ×3

generics ×1

hashmap ×1