This commit is contained in:
@@ -37,13 +37,13 @@ public abstract class Factory<R extends Reader, W extends Writer> {
|
|||||||
private final Encodeable<W, ?> anyEncoder = new AnyEncoder(this);
|
private final Encodeable<W, ?> anyEncoder = new AnyEncoder(this);
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------
|
||||||
private final HashedMap<Class, Creator> creators = new HashedMap();
|
private final ConcurrentHashMap<Class, Creator> creators = new ConcurrentHashMap();
|
||||||
|
|
||||||
private final Map<String, Class> entitys = new ConcurrentHashMap();
|
private final ConcurrentHashMap<String, Class> entitys = new ConcurrentHashMap();
|
||||||
|
|
||||||
private final HashedMap<Type, Decodeable<R, ?>> decoders = new HashedMap();
|
private final ConcurrentHashMap<Type, Decodeable<R, ?>> decoders = new ConcurrentHashMap();
|
||||||
|
|
||||||
private final HashedMap<Type, Encodeable<W, ?>> encoders = new HashedMap();
|
private final ConcurrentHashMap<Type, Encodeable<W, ?>> encoders = new ConcurrentHashMap();
|
||||||
|
|
||||||
private final HashMap<AccessibleObject, ConvertColumnEntry> columnEntrys = new HashMap();
|
private final HashMap<AccessibleObject, ConvertColumnEntry> columnEntrys = new HashMap();
|
||||||
|
|
||||||
|
|||||||
@@ -1,72 +0,0 @@
|
|||||||
/*
|
|
||||||
* To change this template, choose Tools | Templates
|
|
||||||
* and open the template in the editor.
|
|
||||||
*/
|
|
||||||
package org.redkale.convert;
|
|
||||||
|
|
||||||
import java.lang.reflect.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 只增不减的伪Map类
|
|
||||||
*
|
|
||||||
* @see http://www.redkale.org
|
|
||||||
* @author zhangjx
|
|
||||||
* @param <K>
|
|
||||||
* @param <V>
|
|
||||||
*/
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public final class HashedMap<K extends Type, V> {
|
|
||||||
|
|
||||||
protected final transient Entry<K, V>[] table;
|
|
||||||
|
|
||||||
public HashedMap() {
|
|
||||||
this(128);
|
|
||||||
}
|
|
||||||
|
|
||||||
public HashedMap(int initCapacity) {
|
|
||||||
this.table = new Entry[Math.max(initCapacity, 16)];
|
|
||||||
}
|
|
||||||
|
|
||||||
public final V get(final K key) {
|
|
||||||
final K k = key;
|
|
||||||
final Entry<K, V>[] data = this.table;
|
|
||||||
Entry<K, V> entry = data[k.hashCode() & (data.length - 1)];
|
|
||||||
while (entry != null) {
|
|
||||||
if (k == entry.key) return entry.value;
|
|
||||||
entry = entry.next;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final V put(K key, V value) {
|
|
||||||
final K k = key;
|
|
||||||
final Entry<K, V>[] data = this.table;
|
|
||||||
final int index = k.hashCode() & (data.length - 1);
|
|
||||||
Entry<K, V> entry = data[index];
|
|
||||||
while (entry != null) {
|
|
||||||
if (k == entry.key) {
|
|
||||||
V old = entry.value;
|
|
||||||
entry.value = value;
|
|
||||||
return old;
|
|
||||||
}
|
|
||||||
entry = entry.next;
|
|
||||||
}
|
|
||||||
data[index] = new Entry(key, value, data[index]);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static final class Entry<K, V> {
|
|
||||||
|
|
||||||
protected V value;
|
|
||||||
|
|
||||||
protected final K key;
|
|
||||||
|
|
||||||
protected final Entry<K, V> next;
|
|
||||||
|
|
||||||
protected Entry(K key, V value, Entry<K, V> next) {
|
|
||||||
this.key = key;
|
|
||||||
this.value = value;
|
|
||||||
this.next = next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user