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源码解读 ...
随机推荐
- 前端 页面加载完成事件 - onload,五种写法
在js和jquery使用中,经常使用到页面加载完成后执行某一方法.通过整理,大概是五种方式(其中有的只是书写方式不一样). 1:使用jQuery的$(function){}; 2:使用jquery的$ ...
- thinkphp6 常用方法文档
请求变量 use think\facade\Request; Request::param('name'); Request::param();全部请求变量 返回数组 Request::param([ ...
- django配置静态文件的两种方法
方法一:按照django配置静态文件的方法,可以在APP应用目录下创建一个static的文件夹,然后在static文件夹下创建一个和APP同名的文件夹,如我有一个blog的django项目,在下面有一 ...
- Elasticsearch(9) --- 聚合查询(Bucket聚合)
Elasticsearch(9) --- 聚合查询(Bucket聚合) 上一篇讲了Elasticsearch聚合查询中的Metric聚合:Elasticsearch(8) --- 聚合查询(Metri ...
- Unity-遇到的问题小总结
1. event trigger后面显示不了对应的方法 原因:我是直接把脚本拖拽进去的,这是没有实例化的,拖拽进去的应该是挂载这个脚本的GameObject就可以了 2.制作prefeb 将场景中的单 ...
- npm install 时间很长解决方案
国外镜像站很慢,所以我们可以更换为国内的镜像站 首先可以get命令查看registry npm congfig get registry 如果你没有变更果regustry你的结果应该会是这样的 也就是 ...
- 在Docker中启动Cloudera
写在前面 记录一下,一个简单的cloudera处理平台的构建过程和一些基本组件的使用 前置说明 需要一台安装有Docker的机器 docker常用命令: docker ps docker ps -a ...
- java Swing 界面化查询数据库表
两天从0基础写的.没有按钮对话框功能,只是简单的实现. 当然代码上有很多需要优化的,基本需要重写哈哈哈.但是我怕以后有需要所以还是存一下好了.<把RS结果集,放vector里面,用vector构 ...
- 安装sublime text3 、转化为汉化版、安装SublimeREPL使得在交互条件下运行代码,设置快捷键
一.sublime Sublime Text 3是轻量级的,安装包很小,它的大部分功能是依靠丰富的插件实现的,而且占用资源少.目前主流版本是Sublime Text3,在官网就可以下载,http:// ...
- java8 函数接口
[前言] java8新特性 java8 Optional使用总结 java8 lambda表达式 Java 8 时间日期使用 1.函数式接口新特性 java8中引入了函数式接口新特性,使用@Funct ...