java集合之ArrayList链表基础
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链表基础的更多相关文章
- java集合之linkedList链表基础
LinkedList链表: List接口的链接列表实现.允许存储所有元素(包含null).使用频繁增删元素. linkedList方法: void addFirst(E e) 指定元素插入列表的开头 ...
- 从源码看Java集合之ArrayList
Java集合之ArrayList - 吃透增删查改 从源码看初始化以及增删查改,学习ArrayList. 先来看下ArrayList定义的几个属性: private static final int ...
- Java集合干货——ArrayList源码分析
ArrayList源码分析 前言 在之前的文章中我们提到过ArrayList,ArrayList可以说是每一个学java的人使用最多最熟练的集合了,但是知其然不知其所以然.关于ArrayList的具体 ...
- java集合之ArrayList,TreeSet和HashMap分析
java集合是一个重点和难点,如果我们刻意记住所有的用法与区别则是不太现实的,之前一直在使用相关的集合类,但是没有仔细研究区别,现在来把平时使用比较频繁的一些集合做一下分析和总结,目的就是以后在需要使 ...
- 【源码阅读】Java集合之一 - ArrayList源码深度解读
Java 源码阅读的第一步是Collection框架源码,这也是面试基础中的基础: 针对Collection的源码阅读写一个系列的文章,从ArrayList开始第一篇. ---@pdai JDK版本 ...
- java集合-数组ArrayList
1.简介 ArrayList是java集合框架常用的集合类之一,底层是基于数组来实现容量大小动态变化的. 2.类图(JDK 1.8) 下图是ArrayList实现的接口和继承的类关系图: public ...
- Java集合关于ArrayList
ArrayList实现源码分析 2016-04-11 17:52 by 淮左, 207 阅读, 0 评论, 收藏, 编辑 本文将以以下几个问题来探讨ArrayList的源码实现1.ArrayList的 ...
- Java集合:ArrayList的实现原理
Java集合---ArrayList的实现原理 目录: 一. ArrayList概述 二. ArrayList的实现 1) 私有属性 2) 构造方法 3) 元素存储 4) 元素读取 5) 元素删除 ...
- Java集合(六)--ArrayList、LinkedList和Vector对比
在前两篇博客,学习了ArrayList和LinkedList的源码,地址在这: Java集合(五)--LinkedList源码解读 Java集合(四)--基于JDK1.8的ArrayList源码解读 ...
随机推荐
- mybatis动态拼接条件的技巧 where 1=1 或者where标签
/** * 根据输入的学生信息进行条件检索 * 1. 当只输入用户名时, 使用用户名进行模糊检索: * 2. 当只输入邮箱时, 使用性别进行完全匹配 * 3. 当用户名 ...
- 定义一个Person类,其中包括:1.定义属性:姓名、年龄、民族作为成员变量。定义静态成员变量:人数2.定义构造方法:对成员变量进行初始化。3.定义多个方法:分别显示相应的属性值,例如getName(){System.out.print("名称="+name+";"); }4.定义一个方法“成长”:实现年龄的增加,每执行一次年龄增加1
题目显示不全,完整题目描述: (1)定义一个Person类,其中包括:1.定义属性:姓名:年龄:民族作为成员变量.定义静态成员变量:人数2.定义构造方法:对成员变量进行初始化.3.定义多个方法:分别显 ...
- Linux 笔记 - 第十章 Shell 基础知识
博客地址:http://www.moonxy.com 一.前言 Shell 是系统的用户界面,提供了用户与内核进行交互操作的一种接口,它接收用户输入的命令并把它送入内核去执行.实际上 Shell 是一 ...
- centos php7 安装mysqli扩展心得
在新配服务器时发现,php无法连接到mysql.通过phpinfo发现.根本没有显示mysqli的相关配置.经过一系列研究.总结了下.: 第一步: 在phpinfo里没有mysqli配置,原因是安装p ...
- php判断访问协议是否是https
可以通过$_SERVER中获取是否是HTTPS协议. 在$_SERVER["SERVER_PROTOCOL"]中拿到的只能是http.$_SERVER['HTTPS'] === ...
- 探索form组件和cookie,session组件
一. 实现注册功能 后端代码: from django.shortcuts import render,HttpResponse,redirect from app01 import models C ...
- 55 (OC)* 图片圆角处理
iOS图片设置圆角性能优化 问题 圆角虽好,但如果使用不当,它就是你的帧数杀手,特别当它出现在滚动列表的时候.下面来看圆角如何毁掉你的流畅度的. 实测 layer.cornerRadius 我创建 ...
- 04: OpenGL ES 基础教程03 纹理
前言 1:常用类: 1:纹理的作用 正文 一:常用类 上下文 顶点数据缓存 着色器 baseEffect 一:纹理 1.1: 纹理可以控制渲染的每个像素的颜色. 1.2: 纹素:与像素一样,保存每 ...
- 神奇的 SQL 之谓词 → 难理解的 EXISTS
前言 开心一刻 我要飞的更高,飞的更高,啊! 谓词 SQL 中的谓词指的是:返回值是逻辑值的函数.我们知道函数的返回值有可能是数字.字符串或者日期等等,但谓词的返回值全部是逻辑值(TRUE/FALSE ...
- Vue学习之todolist功能开发
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...