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. 装系统---------- u盘 安装系统

    1.首先根据你的电脑品牌进入bios 模式 如何进入:  不同电脑品牌进入bios 方法 进入之后设置启动方式 将第一启动设置为U盘启动设置好后 使用 Fn + F10  保存 2.使用制作好的 U盘 ...

  2. java动态代理之CGLIB实现

    动态代理(CGlib 与连接池的案例) Cglib代理: 针对类来实现代理,对指定目标 产生一个子类 通过方法拦截技术拦截所有父类方法的调用. 我们要使用cglib代理必须引入 cglib的jar包 ...

  3. request对象的方法

    request对象封装的是请求的数据,由服务器创建,作为实参传递给Servlet的方法,一个请求对应一个request对象,request对象可以获得请求数据. 1.获取请求行信息 (1)get提交 ...

  4. 基于ViewPager与TabLayout建立三类图表

      延续昨天,今天使用ViewPager和TabLayout来实战一下,顺便补充一下新知识:   1.线形图,显示一周的温度情况.   2.饼状图,2017年互联网教育细分领域投资情况.   3.柱状 ...

  5. 字符串转化成int

    将str转化成int #include<stdio.h> #include<string> int err = 0; int str_to_int(char *s) { lon ...

  6. 47 (OC)* OC反射机制

    Objective-C反射机制:是类似于Java的反射机制,这种动态机制可以让oc语言更加的灵活.这句话是对oc反射机制的初步认识,不过具体的怎么类似于java机制,怎么让oc更加的灵活,还得看下面的 ...

  7. [C++] C++中的常用库

    转载自:C++常用库 C++ 资源大全 关于 C++ 框架.库和资源的一些汇总列表,内容包括:标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等. 标准库 C++标准库,包 ...

  8. eclipse中xml文件格式化

    eclipse中xml文件格式化(ctrl+shift+f),可能会发现格式化xml文件后很乱,如图: 这不是我想要的样子,我想要的是这样的: 解决办法:windows -> Perferenc ...

  9. 【linux】【sonarqube】安装sonarqube7.9

    前言 SonarQube 是一款用于代码质量管理的开源工具,它主要用于管理源代码的质量. 通过插件形式,可以支持众多计算机语言,比如 java, C#, go,C/C++, PL/SQL, Cobol ...

  10. Python人工智能第一篇:语音合成和语音识别

    Python人工智能第一篇:语音合成和语音识别 ​ 此篇是人工智能应用的重点,只用现成的技术不做底层算法,也是让初级程序员快速进入人工智能行业的捷径.目前市面上主流的AI技术提供公司有很多,比如百度, ...