Merge branch 'master' of github.com:redisson/redisson

pull/4952/head
Nikita Koksharov 2 years ago
commit ade7cbee44

@ -15,6 +15,7 @@
*/
package org.redisson.client.protocol.decoder;
import java.util.LinkedHashMap;
import java.util.List;
import org.redisson.client.codec.Codec;
@ -39,4 +40,11 @@ public interface MultiDecoder<T> {
T decode(List<Object> parts, State state);
static <K, V> LinkedHashMap<K, V> newLinkedHashMap(int expectedSize) {
if (expectedSize < 3) {
return new LinkedHashMap<>(expectedSize + 1);
}
return new LinkedHashMap<>((int) Math.ceil(expectedSize / 0.75));
}
}

@ -15,7 +15,6 @@
*/
package org.redisson.client.protocol.decoder;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@ -55,7 +54,7 @@ public class ObjectMapDecoder implements MultiDecoder<Object> {
return parts;
}
Map<Object, Object> result = new LinkedHashMap<>(parts.size()/2);
Map<Object, Object> result = MultiDecoder.newLinkedHashMap(parts.size()/2);
for (int i = 0; i < parts.size(); i++) {
if (i % 2 != 0) {
result.put(parts.get(i-1), parts.get(i));

@ -19,7 +19,6 @@ import org.redisson.client.codec.Codec;
import org.redisson.client.handler.State;
import org.redisson.client.protocol.Decoder;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@ -42,7 +41,7 @@ public class ObjectMapEntryReplayDecoder implements MultiDecoder<Set<Entry<Objec
@Override
public Set<Entry<Object, Object>> decode(List<Object> parts, State state) {
Map<Object, Object> result = new LinkedHashMap<Object, Object>(parts.size()/2);
Map<Object, Object> result = MultiDecoder.newLinkedHashMap(parts.size()/2);
for (int i = 0; i < parts.size(); i++) {
if (i % 2 != 0) {
result.put(parts.get(i-1), parts.get(i));

@ -19,7 +19,6 @@ import org.redisson.client.codec.Codec;
import org.redisson.client.handler.State;
import org.redisson.client.protocol.Decoder;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@ -58,7 +57,7 @@ public class ObjectMapReplayDecoder<K, V> implements MultiDecoder<Map<K, V>> {
@Override
public Map<K, V> decode(List<Object> parts, State state) {
Map<K, V> result = new LinkedHashMap<>(parts.size()/2);
Map<K, V> result = MultiDecoder.newLinkedHashMap(parts.size()/2);
for (int i = 0; i < parts.size(); i++) {
if (i % 2 != 0) {
if (swapKeyValue) {

@ -17,7 +17,6 @@ package org.redisson.client.protocol.decoder;
import org.redisson.client.handler.State;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@ -30,7 +29,7 @@ public class StringMapReplayDecoder implements MultiDecoder<Map<String, String>>
@Override
public Map<String, String> decode(List<Object> parts, State state) {
Map<String, String> result = new LinkedHashMap<>(parts.size()/2);
Map<String, String> result = MultiDecoder.newLinkedHashMap(parts.size()/2);
for (int i = 0; i < parts.size(); i++) {
if (i % 2 != 0) {
result.put(parts.get(i-1).toString(), parts.get(i).toString());

Loading…
Cancel
Save