Arraylist集合 -----添加方法

1、add(E e) 向集合中添加元素

  

  1. /**
  2. * 检查数组容量是否够用
  3. * @param minCapacity
  4. */
  5. public void ensureCapacity(int minCapacity){
  6. modCount++;
  7. int oldCapacity = elementData.length;
  8. if(minCapacity > oldCapacity){
  9. Object oldData[] = elementData;
  10. int newCapacity = (oldCapacity * 3)/2+1;
  11. if(newCapacity < minCapacity){
  12. newCapacity = minCapacity;
  13. elementData = Arrays.copyOf(elementData, newCapacity);
  14. }
  15. }
  16.  
  17. }
  1. /* (non-Javadoc)
  2. * 向ArrayList中添加元素
  3. * @see java.util.AbstractList#add(java.lang.Object)
  4. */
  5. public boolean add(E e){
  6. ensureCapacity(size+1);
  7. elementData[size++] = e;
  8. return true;
  9. }

 2、add(int  index ,E e) 向集合的指定索引处添加元素

  

  1. /**
  2. * Inserts the specified element at the specified position in this
  3. * list. Shifts the element currently at that position (if any) and
  4. * any subsequent elements to the right (adds one to their indices).
  5. *
  6. * @param index index at which the specified element is to be inserted
  7. * @param element element to be inserted
  8. * @throws IndexOutOfBoundsException {@inheritDoc}
  9. */
  10. public void add(int index, E element) {
  11. if (index > size || index < 0)
  12. throw new IndexOutOfBoundsException(
  13. "Index: "+index+", Size: "+size);
  14.  
  15. ensureCapacity(size+1); // Increments modCount!!
  16. System.arraycopy(elementData, index, elementData, index + 1,
  17. size - index);
  18. elementData[index] = element;
  19. size++;
  20. }

  3、addAll(Collection< ? extends E> c) 添加集合

 

  1. /*
  2. * 添加元素集合
  3. * (non-Javadoc)
  4. * @see java.util.AbstractCollection#addAll(java.util.Collection)
  5. */
  6. public boolean addAll(Collection<? extends E> c){
  7. Object[] a = c.toArray();
  8. int numNew = a.length;
  9. ensureCapacity(size+numNew);
  10. System.arraycopy(a, 0, elementData, size, numNew);
  11. size+=numNew;
  12. return numNew!=0;
  13.  
  14. }

  4、addAll(int index, Collection<? extends E> c); 在指定索引出添加集合

  

  1. public boolean addAll(int index, Collection<? extends E> c) {
  2. if (index > size || index < 0)
  3. throw new IndexOutOfBoundsException(
  4. "Index: " + index + ", Size: " + size);
  5.  
  6. Object[] a = c.toArray();
  7. int numNew = a.length;
  8. ensureCapacity(size + numNew); // Increments modCount
  9.  
  10. int numMoved = size - index;
  11. if (numMoved > 0)
  12. System.arraycopy(elementData, index, elementData, index + numNew,
  13. numMoved);
  14.  
  15. System.arraycopy(a, 0, elementData, index, numNew);
  16. size += numNew;
  17. return numNew != 0;
  18. }

  

深入理解java集合框架之---------Arraylist集合 -----添加方法的更多相关文章

  1. 深入理解java集合框架之---------Arraylist集合 -----构造函数

    ArrayList有三个构造方法 ArrayList有三个常量 1.private transient Object[] elementData (数组); 2.private int size (元 ...

  2. 深入理解java集合框架之---------Arraylist集合

    ArrayList简介 ArrayLIst是动态数组,用MSDN的说法就是Array的复杂版本,它提供了动态的增加和减少元素,实现了Collection和List接口,可以灵活的设置数组的大小,要注意 ...

  3. Java集合框架之ArrayList浅析

    Java集合框架之ArrayList浅析 一.ArrayList综述: 位于java.util包下的ArrayList是java集合框架的重要成员,它就是传说中的动态数组,用MSDN中的说法,就是Ar ...

  4. 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合

    不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...

  5. Java集合框架概述和集合的遍历

    第三阶段 JAVA常见对象的学习 集合框架概述和集合的遍历 (一) 集合框架的概述 (1) 集合的由来 如果一个程序只包含固定数量的且其生命周期都是已知的对象,那么这是一个非常简单的程序. 通常,程序 ...

  6. Java 基础 引用数据类型 ArrayList集合

    引用数据类型(类) 分类 提到引用数据类型(类),其实我们对它并不陌生,如使用过的Scanner类.Random类. 我们可以把类的类型为两种: 第一种,Java为我们提供好的类,如Scanner类, ...

  7. 第14章 集合框架(1)-List集合的各种类

    1.概述 1.1.Java集合框架的由来 1.2.什么是集合框架? 1.3.为什么需要集合框架 1.4.常用的框架接口规范 2.Vector类 2.1.存储原理 2.2.构造方法 2.3.常用方法 3 ...

  8. 深入理解Java并发框架AQS系列(一):线程

    深入理解Java并发框架AQS系列(一):线程 深入理解Java并发框架AQS系列(二):AQS框架简介及锁概念 一.概述 1.1.前言 重剑无锋,大巧不工 读j.u.c包下的源码,永远无法绕开的经典 ...

  9. 深入理解Java并发框架AQS系列(二):AQS框架简介及锁概念

    深入理解Java并发框架AQS系列(一):线程 深入理解Java并发框架AQS系列(二):AQS框架简介及锁概念 一.AQS框架简介 AQS诞生于Jdk1.5,在当时低效且功能单一的synchroni ...

随机推荐

  1. [leetcode] 13. Remove Duplicates from Sorted List

    这个题目其实不难的,主要是我C++的水平太差了,链表那里绊了好久,但是又不像用python,所以还是强行上了. 题目如下: Given a sorted linked list, delete all ...

  2. Android-DateTimeAndroidUtil-工具类

    DateTimeAndroidUtil-工具类 是关于时间日前相关的公用方法: package liudeli.mynetwork01.utils; import android.util.Log; ...

  3. 如何在TortoiseGit中使用ssh-keygen生成的key

    再windows 用TortoiseGit 时,git clone 项目时 提示 "Couldn't load this key (OpenSSH SSH-2 private key),如下 ...

  4. Thread类

    Thread类相对于线程池中的线程,使用者有更多的控制权.该类允许创建前台线程,设置线程优先级等.Thread类的构造函数重载为接受ThreadStart和ParameterizedThreadSta ...

  5. C#多线程编程系列(一)- 简介

    目录 系列大纲 一.前言 二.目录结构 四.章节结构 五.相关链接 系列大纲 目前只整理到第二章,线程同步,笔者后面会慢慢更新,争取能把这本书中精华的知识都分享出来. C#多线程编程系列(一)- 简介 ...

  6. 如何修改Entity Framework Db Frist模式下的Entity继承关系?

    1.准备工作 Db Frist创建实体数据模型(创建edmx并不是重点,各位随意即可),此处取名ZeroCodeDB,所得文件如图所示:其中红框中的文件(ZeroCodeDB.tt)是各实体的生成的关 ...

  7. cannot connect cube with sharepoint dashboard designer

    需要下载WindowsIdentityFoundation-SDK-4.0进行安装

  8. 流式处理框架storm浅析(下篇)

    本文来自网易云社区 作者:汪建伟 举个栗子 1 实现的目标 设计一个系统,来实现对一个文本里面的单词出现的频率进行统计. 2 设计Topology结构: 这是一个简单的例子,topology也非常简单 ...

  9. Android Activity 无法获取组件尺寸

    Activity 创建的时候,可能在 onCreate 的时刻,窗口 Window 对象的创建还未完成. 那么最合适的时机是什么呢?答案是:onWindowFocusChanged.这个方法在 Act ...

  10. linux命令之信息显示与搜索文件命令

    1.uname:显示系统信息 该命令用于显示系统相关的信息,比如内核版本号,硬件架构等. 参数 说明 -n(常用) 显示主机名称 -r(常用) 显示内核发行版本号 示例: 1)显示主机名 [root@ ...