Why is the entry of threadLocalMap designed in the form of a linked list?

threadlocalmap uses open addressing to resolve hash conflicts, but the design of node in threadlocalmap is still

.
static class Entry extends WeakReference<ThreadLocal<?>> {
            /** The value associated with this ThreadLocal. */
            Object value;

            Entry(ThreadLocal<?> k, Object v) {
                super(k);
                value = v;
            }
        }
        

in that case, what is the use of the entry in this Entry?
and why does this structure have no key?

Mar.11,2021

first of all, Entry is not a linked list value is value,key, that is, the weakly referenced ThreadLocal object. More than one entry exists in the array. Usually we use ThreadLocal to store the private variables of the current thread, that is, to store only one value, so why do we need an array that can store multiple values?

ThreadLocal can be defined more than one, and each ThreadLocal has its own private thread variable

Menu