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. python time.striptime模块用法

    python time模块中strptime用法 time.strptime(string[, format]) 其中string参数即为要深入的日期字符串.format为格式化的日期字符串. %Y ...

  2. 53 (OC) 皮肤切换

    1:添加皮肤 1.1:iOS皮肤切换方案 http://www.cocoachina.com/ios/20171012/20762.html 1.2:整合 iOS几种换肤思路和demo https:/ ...

  3. [Code] 变态之人键合一

    目的也比较单纯,选一门语言,走向人键合一. 选了两本书作为操练场:<精通Python设计模式>.<Data Structure and Algorithm in Python> ...

  4. 从零开始入门 K8s | 应用编排与管理:Job & DaemonSet

    一.Job 需求来源 Job 背景问题 首先我们来看一下 Job 的需求来源.我们知道 K8s 里面,最小的调度单元是 Pod,我们可以直接通过 Pod 来运行任务进程.这样做将会产生以下几种问题: ...

  5. Salem and Sticks-萨鲁曼的棍子 CodeForce#1105A 暴力

    题目链接:Salem and Sticks 题目原文 Salem gave you 

  6. maven 项目报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)解决

    idea在使用maven构建的项目中使用mybatis时报错org.apache.ibatis.binding.BindingException: Invalid bound statement (n ...

  7. 阿里云服务器CentOS6.9 nexus私服配置

    从nexus官网下载nexus版本. 下载地址如下:https://help.sonatype.com/repomanager2/download 如果要下载3.X版本的,可以把repomanager ...

  8. Thinkphp5.0第一篇

    THINKphp5.0框架 mvc moudle(数据)+view(表现层)+controller(业务逻辑) thinkphp5.0特点 中国人开发最符合国人习惯和思维方式 开源免费面向对象轻量级的 ...

  9. 排坑日记之批量从库IO进程停止

    早上刚睁眼,看到了一堆数据库告警的短信,其中一个内容如下: Problem started at 05:02:58 on 2019.10.12 Problem name: Slave is stopp ...

  10. pycharm 激活码 2019/12最新福利(3)

    K6IXATEF43-eyJsaWNlbnNlSWQiOiJLNklYQVRFRjQzIiwibGljZW5zZWVOYW1lIjoi5o6I5p2D5Luj55CG5ZWGOiBodHRwOi8va ...