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源码解读 ...
随机推荐
- ECharts使用总结归纳
UserNAME:你为什么写这篇文章? My:最近项目中有统计报表的需求,使用了ECharts,“度娘”过程中东查西找太麻烦,自己写一篇加深印象,方便以后查阅. 辅助文档------>ttps: ...
- ACM团队周赛题解(1)
这次周赛题目拉了CF315和CF349两套题. 因为我代码模板较长,便只放出关键代码部分 #define ll long long #define MMT(s,a) memset(s, a, size ...
- Day20 磁盘管理2之RAID卡
1.磁盘的基本分区Gdisk 前面我们已经了解到fdisk分区,但fdisk不支持给高于2TB的磁盘进行分区.如果有单块盘高于2TB,建议使用Gdisk进行分区. 1.使用gdisk进行磁盘分区 1. ...
- Android的有序广播和无序广播(解决安卓8.0版本之后有序广播的接收问题)
前言 Google从Android8.0版本开始,对在清单文件中静态注册广播做了限制. *** 特殊广播(动态注册广播接收者) 说:有序广播和无序广播之前,咱们先来说下Android中一些特殊的广播如 ...
- Spring Cloud 系列之 Spring Cloud Stream
Spring Cloud Stream 是消息中间件组件,它集成了 kafka 和 rabbitmq .本篇文章以 Rabbit MQ 为消息中间件系统为基础,介绍 Spring Cloud Stre ...
- php接受的post数据类型
通常情况下用户使用浏览器网页表单向服务器post提交数据,我们使用PHP的$_POST接收用户POST到服务器的数据,并进行适当的处理.但有些情况下,如用户使用客户端软件向服务端php程序发送post ...
- 【linux】【FastDFS】FastDFS数据迁移
后来同步的时候发现有的没有同步过来,应该是没有同步完成我就停止服务了. 最后尝试直接把fastdfs storage的data文件迁移过去即可. 1.在新的storage server服务器上停止所有 ...
- JSR303 后端校验包的使用
1.首先通过Maven导入JSR303架包. <!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate- ...
- 基于python的scrapy环境搭建
0.1安装python软件 32位机的电脑安装python-3.6.3.exe 64位机的电脑安装python-3.6.3-amd64.exe 0.1.1 python环境搭建 执行安装程序 选择Ad ...
- 【ADO.NET基础-Login】带验证码验证的登录界面(用于简单的基础学习)
以下代码如果有不对或者不妥之处,还望大神们指点一二 或者有同学者有问题或建议,一定要提出来,共同探讨 小弟在此感谢! 前台代码: <!DOCTYPE html> <html xmln ...