|
6 | 6 | import java.nio.charset.CharacterCodingException; |
7 | 7 | import java.nio.charset.Charset; |
8 | 8 | import java.nio.charset.CharsetDecoder; |
| 9 | +import java.util.ArrayList; |
| 10 | +import java.util.Collections; |
| 11 | +import java.util.HashMap; |
| 12 | +import java.util.List; |
| 13 | +import java.util.Map; |
9 | 14 |
|
10 | 15 | import com.fasterxml.jackson.databind.JsonNode; |
11 | 16 | import com.fasterxml.jackson.databind.ObjectMapper; |
@@ -257,26 +262,27 @@ private static BooleanNode decodeBoolean(int size) |
257 | 262 | } |
258 | 263 |
|
259 | 264 | private JsonNode decodeArray(int size) throws IOException { |
260 | | - ArrayNode array = OBJECT_MAPPER.createArrayNode(); |
261 | 265 |
|
| 266 | + List<JsonNode> array = new ArrayList<JsonNode>(size); |
262 | 267 | for (int i = 0; i < size; i++) { |
263 | 268 | JsonNode r = this.decode(); |
264 | 269 | array.add(r); |
265 | 270 | } |
266 | 271 |
|
267 | | - return array; |
| 272 | + return new ArrayNode(OBJECT_MAPPER.getNodeFactory(), Collections.unmodifiableList(array)); |
268 | 273 | } |
269 | 274 |
|
270 | 275 | private JsonNode decodeMap(int size) throws IOException { |
271 | | - ObjectNode map = OBJECT_MAPPER.createObjectNode(); |
| 276 | + int capacity = (int) (size / 0.75F + 1.0F); |
| 277 | + Map<String, JsonNode> map = new HashMap<String, JsonNode>(capacity); |
272 | 278 |
|
273 | 279 | for (int i = 0; i < size; i++) { |
274 | 280 | String key = this.decode().asText(); |
275 | 281 | JsonNode value = this.decode(); |
276 | | - map.set(key, value); |
| 282 | + map.put(key, value); |
277 | 283 | } |
278 | 284 |
|
279 | | - return map; |
| 285 | + return new ObjectNode(OBJECT_MAPPER.getNodeFactory(), Collections.unmodifiableMap(map)); |
280 | 286 | } |
281 | 287 |
|
282 | 288 | private byte[] getByteArray(int length) { |
|
0 commit comments