This commit is contained in:
Looly 2020-05-03 09:10:06 +08:00
parent a4c8ebc572
commit 0321ce1120
4 changed files with 121 additions and 36 deletions

View File

@ -18,6 +18,7 @@
### Bug修复
* 【core 】 修复URLBuilder中请求参数有`&`导致的问题issue#850@Github
* 【core 】 修复URLBuilder中路径以`/`结尾导致的问题issue#I1G44J@Gitee
* 【db 】 修复SqlBuilder中orderBy无效问题issue#856@Github
-------------------------------------------------------------------------------------------------------------

View File

@ -4,24 +4,31 @@ import java.io.Serializable;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import java.util.function.Function;
/**
* Map包装类通过包装一个已有Map实现特定功能例如自定义Key的规则或Value规则
*
* @author looly
*
* @param <K> 键类型
* @param <V> 值类型
* @author looly
* @author looly
* @since 4.3.3
*/
public class MapWrapper<K, V> implements Map<K, V>, Iterable<Map.Entry<K, V>>, Serializable, Cloneable {
private static final long serialVersionUID = -7524578042008586382L;
/** 默认增长因子 */
/**
* 默认增长因子
*/
protected static final float DEFAULT_LOAD_FACTOR = 0.75f;
/** 默认初始大小 */
/**
* 默认初始大小
*/
protected static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
private final Map<K, V> raw;
@ -37,9 +44,10 @@ public class MapWrapper<K, V> implements Map<K, V>, Iterable<Map.Entry<K, V>>, S
/**
* 获取原始的Map
*
* @return Map
*/
public Map<K, V> getRaw(){
public Map<K, V> getRaw() {
return this.raw;
}
@ -113,8 +121,83 @@ public class MapWrapper<K, V> implements Map<K, V>, Iterable<Map.Entry<K, V>>, S
return this.entrySet().iterator();
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
MapWrapper<?, ?> that = (MapWrapper<?, ?>) o;
return Objects.equals(raw, that.raw);
}
@Override
public int hashCode() {
return Objects.hash(raw);
}
@Override
public String toString() {
return raw.toString();
}
@Override
public void forEach(BiConsumer<? super K, ? super V> action) {
raw.forEach(action);
}
@Override
public void replaceAll(BiFunction<? super K, ? super V, ? extends V> function) {
raw.replaceAll(function);
}
@Override
public V putIfAbsent(K key, V value) {
return raw.putIfAbsent(key, value);
}
@Override
public boolean remove(Object key, Object value) {
return raw.remove(key, value);
}
@Override
public boolean replace(K key, V oldValue, V newValue) {
return raw.replace(key, oldValue, newValue);
}
@Override
public V replace(K key, V value) {
return raw.replace(key, value);
}
@Override
public V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) {
return raw.computeIfAbsent(key, mappingFunction);
}
//---------------------------------------------------------------------------- Override default methods start
@Override
public V getOrDefault(Object key, V defaultValue) {
return raw.getOrDefault(key, defaultValue);
}
@Override
public V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction) {
return raw.computeIfPresent(key, remappingFunction);
}
@Override
public V compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction) {
return raw.compute(key, remappingFunction);
}
@Override
public V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction) {
return raw.merge(key, value, remappingFunction);
}
//---------------------------------------------------------------------------- Override default methods end
}

View File

@ -14,7 +14,7 @@ import java.util.Objects;
public class TolerantMap<K, V> extends MapWrapper<K, V> {
private static final long serialVersionUID = -4158133823263496197L;
private final transient V defaultValue;
private final V defaultValue;
/**
* 构造
@ -83,11 +83,12 @@ public class TolerantMap<K, V> extends MapWrapper<K, V> {
if (o == null || getClass() != o.getClass()) {
return false;
}
if (!super.equals(o)) {
if (false == super.equals(o)) {
return false;
}
TolerantMap<?, ?> that = (TolerantMap<?, ?>) o;
return getRaw().equals(that.getRaw()) && Objects.equals(defaultValue, that.defaultValue);
final TolerantMap<?, ?> that = (TolerantMap<?, ?>) o;
return getRaw().equals(that.getRaw())
&& Objects.equals(defaultValue, that.defaultValue);
}
@Override