mirror of
https://github.com/OpenHFT/Chronicle-Map.git
synced 2021-09-13 01:26:12 +00:00
HCOLL-119 removed the use of " public <K, V> SharedHashMap<K, V> create(File file, Class<K> kClass, Class<V> vClass) "
This commit is contained in:
@@ -106,7 +106,8 @@ public interface ChronicleMap<K, V> extends SharedHashMap<K, V>, ConcurrentMapLa
|
||||
*/
|
||||
default void replaceAll(BiFunction<? super K, ? super V, ? extends V> function) {
|
||||
Objects.requireNonNull(function);
|
||||
forEach((k, v) -> {
|
||||
|
||||
final BiConsumer<K, V> action = (k, v) -> {
|
||||
while (!replace(k, v, function.apply(k, v))) {
|
||||
// v changed or k is gone
|
||||
if ((v = get(k)) == null) {
|
||||
@@ -114,7 +115,9 @@ public interface ChronicleMap<K, V> extends SharedHashMap<K, V>, ConcurrentMapLa
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
forEach(action);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1470,7 +1470,7 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V>
|
||||
return (v = get(key)) == null ? defaultValue : v;
|
||||
}
|
||||
|
||||
public void forEach(BiConsumer<? super K, ? super V> action) {
|
||||
/* public void forEach(BiConsumer<? super K, ? super V> action) {
|
||||
if (action == null) throw new NullPointerException();
|
||||
Node<K, V>[] t;
|
||||
if ((t = table) != null) {
|
||||
@@ -1479,9 +1479,9 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V>
|
||||
action.accept(p.key, p.val);
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
public void replaceAll(BiFunction<? super K, ? super V, ? extends V> function) {
|
||||
/* public void replaceAll(BiFunction<? super K, ? super V, ? extends V> function) {
|
||||
if (function == null) throw new NullPointerException();
|
||||
Node<K, V>[] t;
|
||||
if ((t = table) != null) {
|
||||
@@ -1498,7 +1498,7 @@ public class ConcurrentHashMap<K, V> extends AbstractMap<K, V>
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
/**
|
||||
* If the specified key is not already associated with a value, attempts to compute its value using the
|
||||
|
||||
@@ -38,6 +38,7 @@ import java.io.IOException;
|
||||
import java.lang.reflect.Array;
|
||||
import java.nio.channels.FileChannel;
|
||||
import java.util.*;
|
||||
import java.util.function.BiConsumer;
|
||||
|
||||
import static java.lang.Thread.currentThread;
|
||||
|
||||
@@ -68,6 +69,20 @@ abstract class AbstractVanillaSharedMap<K, V> extends net.openhft.collections.Co
|
||||
private final ObjectSerializer objectSerializer;
|
||||
private SharedHashMapBuilder builder;
|
||||
|
||||
|
||||
// todo consider a better way to do this so that is is not creating an entry object each time
|
||||
public void forEach(BiConsumer<? super K, ? super V> action) {
|
||||
if (action == null) throw new NullPointerException();
|
||||
|
||||
final EntryIterator entryIterator = new EntryIterator();
|
||||
|
||||
for (Entry<K, V> e = entryIterator.next(); entryIterator.hasNext(); e = entryIterator.next()) {
|
||||
action.accept(e.getKey(), e.getValue());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private static int figureBufferAllocationFactor(SharedHashMapBuilder builder) {
|
||||
// if expected map size is about 1000, seems rather wasteful to allocate
|
||||
// key and value serialization buffers each x64 of expected entry size..
|
||||
@@ -322,6 +337,7 @@ abstract class AbstractVanillaSharedMap<K, V> extends net.openhft.collections.Co
|
||||
*/
|
||||
@Override
|
||||
public V put(K key, V value) {
|
||||
super.put(key, value);
|
||||
return put0(key, value, true);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user