guava中Lists.newArrayListWithCapacity()的作用和实现原理
来源:互联网 发布:速卖通软件 编辑:程序博客网 时间:2024/06/05 21:16
list集合初始化的时候,若大小可知,应初始化固定大小的集合,也是个好习惯。
避免在add()元素的时候,要扩容,然后就得重新copy一遍元素,这样就不好啦。
ArrayList集合大概原理:就是一个Object数组,来存储值,然后知道这点之后,继续看下面的。
下面关于guava的Lists.newArrayListWithCapacity()初始化带大小的list集合的大概源码概览如下:
List<Person> persons = Lists.newArrayListWithCapacity(4); @GwtCompatible(serializable = true) public static <E> ArrayList<E> newArrayListWithCapacity(int initialArraySize) { checkNonnegative(initialArraySize, "initialArraySize"); // for GWT. return new ArrayList<E>(initialArraySize); } static int checkNonnegative(int value, String name) { if (value < 0) { throw new IllegalArgumentException(name + " cannot be negative but was: " + value); } return value; } public ArrayList(int initialCapacity) { if (initialCapacity > 0) { this.elementData = new Object[initialCapacity]; } else if (initialCapacity == 0) { this.elementData = EMPTY_ELEMENTDATA; } else { throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); } } /** * Shared empty array instance used for empty instances. */ private static final Object[] EMPTY_ELEMENTDATA = {};
0 1
- guava中Lists.newArrayListWithCapacity()的作用和实现原理
- guava之Lists常用示例及newArrayListWithExpectedSize()和newArrayListWithCapacity()详细对比
- C++中 share_from_this类的作用和实现原理
- guava 源码之 Lists transform的坑
- Guava中EventBus的使用和详解
- Guava中Splitter和Joiner的用法
- Java中ThreadLocal类的作用以及实现原理
- Java中ThreadLocal类的作用以及实现原理
- Java中ThreadLocal类的作用以及实现原理
- Java中ThreadLocal类的作用以及实现原理
- Java中ThreadLocal类的作用以及实现原理
- C++中虚继承的作用及底层实现原理
- C++ boost库----share_from_this类的作用和实现原理
- C++ boost库----share_from_this类的作用和实现原理
- C++ boost库----share_from_this类的作用和实现原理
- C++ boost库----share_from_this类的作用和实现原理
- C++ boost库----share_from_this类的作用和实现原理
- boost库----enable_shared_from_this类的作用和实现原理
- Android横向滑动的选项卡
- Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
- Kafka性能测试方法及Benchmark报告
- Google Charts -- 提示框
- 常用的正则判断
- guava中Lists.newArrayListWithCapacity()的作用和实现原理
- Java基础总结6--面向对象2
- Android版的SweetAlert,清新文艺,快意灵动的甜心弹框
- linux 端口管理
- OBIEE会话变量
- 青蛙跳台阶
- intellij idea使用方法---快捷键
- Android学习必用-推荐大牛的博客
- 异步调用与多线程的区别