ArrayList可变数组

arrayList继承AbstractList抽象类,实现list接口,底层基于数组实现。可存放null,除了非同步的之外,大致等同Vector。适用快速访问,复制、序列化。

构造函数:

ArrayList() 默认初始容量为10

ArrayList(int initialCapacity) 指定初始容量

增加大量数据之前,先扩容量。

void ensureCapacity(int minCapacity)

size()方法是数组现在实际大小,而非数组容量大小。

ArrayList线程不同步,List list=Collections.synchronizedList(new ArrayList(…));实现同步。

常用方法:

boolean add(Element e)尾部添加元素

void add(int index,Element e)指定位置添加

boolean addAll(int index,Collection<? extends E> c)指定位置添加指定集合所有元素

boolean addAll(Collection<? extends E> c)在尾部添加指定集合所有元素

void clear()清空链表

void ensureCapacity(int minCapacity) 增加链表容量

Object clone() 浅拷贝arraylist实例

remove(int index)删除指定位置元素

protected void removeRange(int start,int end)删除指定范围的元素

get(int index)取指定位置元素

Object[] toArray()链表转换为数组

<T> T[] toArray(T[] a) 链表转换为数组

E set(int index,E element)指定位置替换

contains(Object o)搜索是否包含指定元素

int indexOf(Object o)返回元素在链表中第一次出现的位置,没有则返回-1

int lastIndexOf(Object o)最后一次出现位置,同上

boolean isEmpty()判断链表是否为空

int size()       返回链表长度

示例:

package test;

import java.util.*;

public class arrayListTest {

public static void main(String args[]) {

ArrayList<String> list = new ArrayList<String>();

LinkedList<String> listLink = new LinkedList<String>();

listLink.add("listLink1");

listLink.add("listLink2");

listLink.add("listLink3");

listLink.add("listLink4");

listLink.add("listLink5");

list.add("list1");

list.add("list2");

list.add(2, "list3");

list.add("list4");

list.addAll(listLink);

System.out.println("1-The arraylist contains the following elements: "+ list);

int pos = list.indexOf("list2");//返回元素在列表中第一次出现的位置

System.out.println("2-The index of list2 is: " + pos);

boolean emptyFg = list.isEmpty();

System.out.println("3-the arraylist is empty or not: " + emptyFg);

int size = list.size();

System.out.println("4-The size of the list is: " + size);

boolean element = list.contains("list5");//判断元素存在与否

System.out.println("5-the arraylist contains the object list5: "+ element);

String item = list.get(0);//获取指定位置元素

System.out.println("6-The item is the index 0 is: " + item);

System.out.println("7-for循环链表");

for (int i = 0; i < list.size(); i++) {

System.out.println("8-Index: " + i + " - Item: " + list.get(i));

}

System.out.println("9-foreach循环链表");

for (String str : list) {

System.out.println("10-元素: " + str);

}

System.out.println("11-使用迭代器iterator循环链表");

for (Iterator<String> it = list.iterator(); it.hasNext();) {

System.out.println("12-元素 is: " + it.next());

}

list.set(1, "位置1set元素");

System.out.println("13-替换指定位置元素: " + list);

list.remove(0);

list.remove("list3");

System.out.println("14-删除元素后: " + list);

String[] simpleArray = list.toArray(new String[list.size()]);

System.out.println("15-链表转换为数组: "+ Arrays.toString(simpleArray));//需要toString方法转换,否则输出的是地址

}

}

java集合之ArrayList链表基础的更多相关文章

  1. java集合之linkedList链表基础

    LinkedList链表: List接口的链接列表实现.允许存储所有元素(包含null).使用频繁增删元素. linkedList方法: void addFirst(E e) 指定元素插入列表的开头 ...

  2. 从源码看Java集合之ArrayList

    Java集合之ArrayList - 吃透增删查改 从源码看初始化以及增删查改,学习ArrayList. 先来看下ArrayList定义的几个属性: private static final int ...

  3. Java集合干货——ArrayList源码分析

    ArrayList源码分析 前言 在之前的文章中我们提到过ArrayList,ArrayList可以说是每一个学java的人使用最多最熟练的集合了,但是知其然不知其所以然.关于ArrayList的具体 ...

  4. java集合之ArrayList,TreeSet和HashMap分析

    java集合是一个重点和难点,如果我们刻意记住所有的用法与区别则是不太现实的,之前一直在使用相关的集合类,但是没有仔细研究区别,现在来把平时使用比较频繁的一些集合做一下分析和总结,目的就是以后在需要使 ...

  5. 【源码阅读】Java集合之一 - ArrayList源码深度解读

    Java 源码阅读的第一步是Collection框架源码,这也是面试基础中的基础: 针对Collection的源码阅读写一个系列的文章,从ArrayList开始第一篇. ---@pdai JDK版本 ...

  6. java集合-数组ArrayList

    1.简介 ArrayList是java集合框架常用的集合类之一,底层是基于数组来实现容量大小动态变化的. 2.类图(JDK 1.8) 下图是ArrayList实现的接口和继承的类关系图: public ...

  7. Java集合关于ArrayList

    ArrayList实现源码分析 2016-04-11 17:52 by 淮左, 207 阅读, 0 评论, 收藏, 编辑 本文将以以下几个问题来探讨ArrayList的源码实现1.ArrayList的 ...

  8. Java集合:ArrayList的实现原理

    Java集合---ArrayList的实现原理   目录: 一. ArrayList概述 二. ArrayList的实现 1) 私有属性 2) 构造方法 3) 元素存储 4) 元素读取 5) 元素删除 ...

  9. Java集合(六)--ArrayList、LinkedList和Vector对比

    在前两篇博客,学习了ArrayList和LinkedList的源码,地址在这: Java集合(五)--LinkedList源码解读 Java集合(四)--基于JDK1.8的ArrayList源码解读 ...

随机推荐

  1. 单点登录(Single Sign On)解决方案

    单点登录(Single Sign On)解决方案 需求 多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. A 网站和 B 网站是同一家公司的关联服务.现在要求,用户只要在其中一个网 ...

  2. java接收控制台输入

    java控制台输入语句: Scanner sc = new Scanner(System.in); 通过一个变量,例如 int r; r = sc.nextInt();   例子: public st ...

  3. Java中一维,二维数组的静态和动态初始化

    今天我们要开始来讲讲Java中的数组,包括一维数组和二维数组的静态初始化和动态初始化 数组概述: 数组可以看成是多个相同类型数据的组合,对这些数据的统一管理; 数组变量属于引用数据类型,数组也可以看成 ...

  4. C语言入门-数据类型

    一.C语言的类型 整数:char.short.int.long.longlong 浮点型:float.double.long double 逻辑:bool 指针 自定义类型 类型有何不同 类型名称:i ...

  5. 使用JSP+Servlet+Jdbc+Echatrs实现对豆瓣电影Top250的展示

    使用JSP+Servlet+Jdbc+Echatrs实现对豆瓣电影Top250的展示 写在前面: 有的小伙伴,会吐槽啦,你这个标题有点长的啊.哈哈 ,好像是的!不过,这个也是本次案例中使用到的关键技术 ...

  6. Jmeter日记,很乱很随意

    这个笔记是写给自己看的,很乱很随意,可能以后自己都看不懂.哈哈 Jmeter两种录制方式: 1使用badboy 2.使用代理 浏览器设置代理 参数化 随机参数化 插件的使用 官网下载和说明https: ...

  7. JAVA多线程线程同步问题

    线程同步 在多线程的编程环境下,可能看着没有问题的代码在运行几千上万或者更多次后,出现了一些看着很奇怪的问题,出现这样的问题的原因就是可能会有两个或者更多个线程进入了同一块业务处理代码中导致了判断失效 ...

  8. Spring 梳理-MVC-前端控制器DispatchServlet及URL请求处理过程

    大多数基于java的web框架,都有前端控制器 spring mvc请求过程 1. 请求会首先发送到DispatchServlet,这是spring的前置Servlet,它会接收请求并转发给sprin ...

  9. 讨论c/c++计算小数的精度问题

    求出所有100以下整数与一位小数相乘等于相加的浮点数这个有Bug浮点数计算时精度会出现误差 除非使用非常精确的类型或限制浮点的位数 比如 #include <iostream> int m ...

  10. RocketMQ学习 -> NameServer路由中心

    RocketMQ项目代码核心目录说明 broker:broker启动进程 client:消息客户端,包含消息生产者,消息消费者相关类 common:公共包 dev:开发者信息(非源代码) distri ...