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源码解读 ...
随机推荐
- LinkedHashSet集合
LinkedHashSet集合与HashSet集合的最大区别在于,LinkedHashSet集合存入和取出的顺序相同,而HashSet集合存取顺序不一定相同: import java.util.Has ...
- java中String常见问题
java中String常见问题 1.字符串比较==和equals ==:比较的是对象,判断两个引用的是否为同一内存地址(物理对象) equals:比较的是值 2.通过空白字符拆封字符串 str.spi ...
- Widget 中的 State 解析
StatefulWidget 应对有交互.需要动态变化视觉效果的场景 StatelessWidget 则用于处理静态的.无状态的视图展示 那么,StatelessWidget 是否有存在的必要?Sta ...
- jenkins插件之Publish Over SSH的使用
1,安装 在插件管理选项搜索Publish Over SSH,然后点击安装即可完成 2,安装完成之后,就可以在jenkins的配置系统中找到Publish Over SSH 配置完服务器之后,然后在项 ...
- 【面试题】Java集合部分面试题
集合与数组? 数组:(可以存储基本数据类型)是用来存储对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用 集合:(只能存储对象,对象类型可以不一样)集合的长度可变,可在多数情况下使用 ...
- selenium-05-问题2
现在的项目组用开源的Selenium做测试,但不得不说,这个东东bug奇多,下面是我遇到的一些问题,有些提供了解决方法,有些则需要继续研究,希望对各位看官有所帮助. 一.不能从命令行运行Seleniu ...
- Knative 实战:基于 Knative Serverless 技术实现天气服务-上篇
提到天气预报服务,我们第一反应是很简单的一个服务啊,目前网上有大把的天气预报 API 可以直接使用,有必要去使用 Knative 搞一套吗?杀鸡用牛刀?先不要着急,我们先看一下实际的几个场景需求: 场 ...
- Hibernate 中setResultTransformer使用
在使用hibernate框架,查询数据库多张表或者单张表的某几个需要的字段数据时,往往只能通过sql语句配合setResultTransformer将查询到的数据封装到一个map集合中,再将map集合 ...
- springboot2.0+ 使用拦截器导致静态资源被拦截
在spring1.0+的版本中,配置拦截器后是不会拦截静态资源的.其配置如下: @Configuration public class WebMvcConfig extends WebMvcConfi ...
- H5刮刮卡效果
效果图: 核心就是使用ctx.globalCompositeOperation = 'destination-out'; 全部代码: <!DOCTYPE html> <html> ...