1、ArrayList
默认大小为10
/** * Default initial capacity. */ private static final int DEFAULT_CAPACITY = 10;
最大容量为2^30 - 8
/** * The maximum size of array to allocate. * Some VMs reserve some header words in an array. * Attempts to allocate larger arrays may result in * OutOfMemoryError: Requested array size exceeds VM limit */ private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8; /** * A constant holding the maximum value an {@code int} can * have, 2<sup>31</sup>-1. */ public static final int MAX_VALUE = 0x7fffffff;
扩容规则为:oldCapacity*1.5
/** * Increases the capacity to ensure that it can hold at least the * number of elements specified by the minimum capacity argument. * @param minCapacity the desired minimum capacity */ private void grow(int minCapacity) { // overflow-conscious code int oldCapacity = elementData.length; int newCapacity = oldCapacity + (oldCapacity >> 1); if (newCapacity - minCapacity < 0) newCapacity = minCapacity; if (newCapacity - MAX_ARRAY_SIZE > 0) newCapacity = hugeCapacity(minCapacity); // minCapacity is usually close to size, so this is a win: elementData = Arrays.copyOf(elementData, newCapacity); }
2、HashMap
默认大小: 16
/** * The default initial capacity - MUST be a power of two. */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
最大容量为:2^30
/** * The maximum capacity, used if a higher value is implicitly specified * by either of the constructors with arguments. * MUST be a power of two <= 1<<30. */ static final int MAXIMUM_CAPACITY = 1 << 30;
扩容规则为:大于oldCapacity的最小的2的n次方整数
/** * Adds a new entry with the specified key, value and hash code to * the specified bucket. It is the responsibility of this * method to resize the table if appropriate. * Subclass overrides this to alter the behavior of put method. */ void addEntry(int hash, K key, V value, int bucketIndex) { if ((size >= threshold) && (null != table[bucketIndex])) { resize(2 * table.length); hash = (null != key) ? hash(key) : 0; bucketIndex = indexFor(hash, table.length); } createEntry(hash, key, value, bucketIndex); }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小牛知识库的支持。如果你想了解更多相关内容请查看下面相关链接
3 采集规则 3.1 Spider结构体 Spider结构体用于定义蜘蛛规则。 3.1.1 一条简单的蜘蛛规则 func init() { BaiduSearch.AddMenu() } var BaiduSearch = &Spider{ Name: "百度搜索", Description: "百度搜索结果 [www.baidu.com]", //
这是我唯一的代码:
问题内容: 我想对包含特定单词的所有锚应用不同的样式。可以在纯CSS中完成吗?如果仅CSS3,也可以。 问题答案: 编号曾经被提议过,但不在CSS3选择器的当前工作草案中。 您将需要一些JavaScript,例如:
本文向大家介绍说一说 ArrayList 的扩容机制吧?相关面试题,主要包含被问及说一说 ArrayList 的扩容机制吧?时的应答技巧和注意事项,需要的朋友参考一下 ArrayList是List接口的实现类,它是支持根据需要而动态增长的数组。java中标准数组是定长的,在数组被创建之后,它们不能被加长或缩短。这就意味着在创建数组时需要知道数组的所需长度,但有时我们需要动态程序中获取数组长度。
MD5签名SDK下载(JAVA/PHP/.NET):https://www.wenjiangs.com/doc/RV0OpbQJLtMD5SignSDK.zip Java MD5签名实现 参考示例:http://blog.csdn.net/u011627980/article/details/52778326 签名规则: 变现猫与开发者之间所有的请求进行md5签名,确保传输的安全可靠。 签名原理:
本文向大家介绍Java中Arraylist动态扩容方法详解,包括了Java中Arraylist动态扩容方法详解的使用技巧和注意事项,需要的朋友参考一下 前言 本文主要给大家介绍了关于Java中Arraylist动态扩容的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 ArrayList 概述 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长。Arra