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. LinkedHashSet集合

    LinkedHashSet集合与HashSet集合的最大区别在于,LinkedHashSet集合存入和取出的顺序相同,而HashSet集合存取顺序不一定相同: import java.util.Has ...

  2. java中String常见问题

    java中String常见问题 1.字符串比较==和equals ==:比较的是对象,判断两个引用的是否为同一内存地址(物理对象) equals:比较的是值 2.通过空白字符拆封字符串 str.spi ...

  3. Widget 中的 State 解析

    StatefulWidget 应对有交互.需要动态变化视觉效果的场景 StatelessWidget 则用于处理静态的.无状态的视图展示 那么,StatelessWidget 是否有存在的必要?Sta ...

  4. jenkins插件之Publish Over SSH的使用

    1,安装 在插件管理选项搜索Publish Over SSH,然后点击安装即可完成 2,安装完成之后,就可以在jenkins的配置系统中找到Publish Over SSH 配置完服务器之后,然后在项 ...

  5. 【面试题】Java集合部分面试题

    集合与数组? 数组:(可以存储基本数据类型)是用来存储对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用 集合:(只能存储对象,对象类型可以不一样)集合的长度可变,可在多数情况下使用 ...

  6. selenium-05-问题2

    现在的项目组用开源的Selenium做测试,但不得不说,这个东东bug奇多,下面是我遇到的一些问题,有些提供了解决方法,有些则需要继续研究,希望对各位看官有所帮助. 一.不能从命令行运行Seleniu ...

  7. Knative 实战:基于 Knative Serverless 技术实现天气服务-上篇

    提到天气预报服务,我们第一反应是很简单的一个服务啊,目前网上有大把的天气预报 API 可以直接使用,有必要去使用 Knative 搞一套吗?杀鸡用牛刀?先不要着急,我们先看一下实际的几个场景需求: 场 ...

  8. Hibernate 中setResultTransformer使用

    在使用hibernate框架,查询数据库多张表或者单张表的某几个需要的字段数据时,往往只能通过sql语句配合setResultTransformer将查询到的数据封装到一个map集合中,再将map集合 ...

  9. springboot2.0+ 使用拦截器导致静态资源被拦截

    在spring1.0+的版本中,配置拦截器后是不会拦截静态资源的.其配置如下: @Configuration public class WebMvcConfig extends WebMvcConfi ...

  10. H5刮刮卡效果

    效果图: 核心就是使用ctx.globalCompositeOperation = 'destination-out'; 全部代码: <!DOCTYPE html> <html> ...