perf[cow]: CopyOnWriteHashMap equals and hashcode

This commit is contained in:
godotg
2024-07-02 12:56:05 +08:00
parent 7ae1971be9
commit 0c0dc62c2b
5 changed files with 29 additions and 12 deletions
@@ -89,7 +89,7 @@ public class MapTest {
bagMap.put("bag3", bagItem3);
bagMap.put("bag4", null);
var map = new HashMap<String, Map<String, String>>();
var map = new CopyOnWriteHashMap<String, Map<String, String>>();
map.put("a", Map.of("b", "b"));
entity.setBaseMap(map);
@@ -34,7 +34,7 @@ public class MapEntity implements IEntity<Long> {
private CopyOnWriteHashMap<Long, CopyOnWriteHashMap<Integer,Integer>> copyOnWriteHashMap = new CopyOnWriteHashMap<>();
private Map<String, BagItem> bagMap = new HashMap<>();
private Map<String, Map<String, String>> baseMap = new HashMap<>();
private CopyOnWriteHashMap<String, Map<String, String>> baseMap = new CopyOnWriteHashMap<>();
private Map<Long, String> longStringMap = new HashMap<>();
private Map<Integer, String> intStringMap = new HashMap<>();
@@ -101,11 +101,11 @@ public class MapEntity implements IEntity<Long> {
this.bagMap = bagMap;
}
public Map<String, Map<String, String>> getBaseMap() {
public CopyOnWriteHashMap<String, Map<String, String>> getBaseMap() {
return baseMap;
}
public void setBaseMap(Map<String, Map<String, String>> baseMap) {
public void setBaseMap(CopyOnWriteHashMap<String, Map<String, String>> baseMap) {
this.baseMap = baseMap;
}
@@ -270,15 +270,12 @@ public class ConcurrentArrayList<E> implements List<E> {
@Override
public boolean equals(Object o) {
if (o == null) {
return false;
lock.lock();
try {
return list.equals(o);
} finally {
lock.unlock();
}
if (this != o) {
return false;
}
return list.equals(o);
}
@Override
@@ -133,4 +133,14 @@ public class CopyOnWriteHashMap<K, V> implements Map<K, V> {
public Set<Entry<K, V>> entrySet() {
return map.entrySet();
}
@Override
public boolean equals(Object o) {
return map.equals(o);
}
@Override
public int hashCode() {
return map.hashCode();
}
}
@@ -137,4 +137,14 @@ public class CopyOnWriteHashMapLongObject<V> implements Map<Long, V> {
public Set<Entry<Long, V>> entrySet() {
return map.entrySet();
}
@Override
public boolean equals(Object o) {
return map.equals(o);
}
@Override
public int hashCode() {
return map.hashCode();
}
}