private void putForCreate(K key, V value) {
        int hash = (key == null) ? 0
                : (key instanceof String) ? hash(hashString((String) key))
                : hash(key.hashCode());
        int i = indexFor(hash, table.length);

        /**
         * Look for preexisting entry for key. This will never happen for clone
         * or deserialize. It will only happen for construction if the input Map
         * is a sorted map whose ordering is inconsistent w/ equals.
         */
        for (Entry<K, V> e = table[i]; e != null; e = e.next) {
            Object k;
            if (e.hash == hash
                    && ((k = e.key) == key || (key != null && key.equals(k)))) {
                e.value = value;
                return;
            }
        }

        createEntry(hash, key, value, i);
    }
This method is used instead of put by constructors and pseudoconstructors
(clone, readObject). It does not resize the table, check for
comodification, etc. It calls createEntry rather than addEntry.
src/main/java/com/alibaba/fastjson/util/AntiCollisionHashMap.java