java中List接口实现类之:ArrayList
2021/4/18 22:25:36
本文主要是介绍java中List接口实现类之:ArrayList,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
继承结构:
1、List接口下的所有实现类都是:有序 可重复的
2、ArrayList底层是采用数组,所以用于数组的特性:下标查找快、头尾增加元素快、中间增删改元素慢
3、LinkedList底层采用双向链表存储,所以具有双向链表的特性:中间增删元素快,查询慢
4、Vector底层和ArrayList相同,都是数组。但是Vector相对ArrayList与LinkedList是线程安全的,所以带来的是效率不如后两者
所以:
ArrayList适合查询
LinkedList适合增删
Vector适合要求线程安全
1、ArrayList可以看成一个动态的数组,即可以改变长度的数组;
优点:
*长度可以动态增长
*ArrayList可以不制定元素的基本类型,所以ArrayList不同于数组,其可以存放不同数据类型
缺点:
*也是因为可以改变长度,所以比普通的数组效率要低
*线程不是安全的,所以尽量使用在单线程中,如果是多线程进行使用Vector
2、初始化ArrayList
--可以制定/不指定初始大小,可以指定/不指定元素类型
//1、不指定元素数组类型 //不初始化容量 ArrayList arr = new ArrayList(); //初始化容量 ArrayList arr1 = new ArrayList(10); //2、制定元素类型 //初始化ArrayList且制定元素类型 ArrayList<String> arrlist = new ArrayList<String>(); arrlist.add("a"); //如果指定了元素类型,必须添加该数据类型的元素
3、ArrayList的常用方法
*add()添加元素
//1、add()添加元素 //直接追加(尾部)元素add() arr.add(1); arr.add(2); arr.add(3); //在制定index位置添加元素 arr.add(1,"abc"); //在原arr下标index=1处添加元素"abc" System.out.println(arr); //结果: [1, abc, 2, 3]
*remove()删除元素
//2、remove()删除元素 arr.add(1); arr.add(2); arr.add(3); arr.add(1) arr.add(1,"abc"); //在原arr下标index=1处添加元素"abc" //直接删除xx元素 arr.remove("abc"); //删除下标=2的元素 arr.remove(2);
如何删除元素为1的ArrayList??不能使用remove(1) 因为这是删除下标=1的元素
arr.add(1); arr.add(2); arr.add(3); arr.add(1); arr.add(1,"abc"); //在原arr下标index=1处添加元素"abc"; [1,abc,2,3,1] //方式1 arr.remove(Integer.valueOf(1)); //只能删除第一个值为1的元素 //结果: [abc, 2, 3, 1] ////////////////////////////////方式2///////// arr.add(1); arr.add(2); arr.add(3); arr.add(1); arr.add(1,"abc"); //在原arr下标index=1处添加元素"abc" //方式2:全部删除 arr.removeAll(Arrays.asList(1)); //[abc, 2, 3]
*获取元素的个数size()
arr.add(1); arr.add(2); arr.add(3); arr.add(1); arr.add(1,"abc"); //在原arr下标index=1处添加元素"abc" //获取元素的个数 System.out.println(arr.size()); //5
*设置元素/修改已存在元素set()
arr.add(1); arr.add(2); arr.add(3); arr.add(1); //set() arr.set(1,200); //设置下标1处=200 System.out.println(arr); //[1, 200, 3, 1] //注意:不能设置不存在的下标 arr.set(4,10); //下标最大=3 ❌
*查找元素get()
*清空元素clear()
这篇关于java中List接口实现类之:ArrayList的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25Java语音识别项目入门:新手必读指南
- 2024-11-25Java语音识别项目入门:轻松开始你的第一个语音识别项目
- 2024-11-25Java语音识别项目入门详解
- 2024-11-25Java语音识别项目教程:从零开始的详细指南
- 2024-11-25JAVA语音识别项目教程:初学者指南
- 2024-11-25Java语音识别项目教程:初学者指南
- 2024-11-25JAVA云原生入门:新手指南与基础教程
- 2024-11-25Java云原生入门:从零开始的全面指南
- 2024-11-25Java云原生入门:新手必读教程
- 2024-11-25JAVA云原生教程:新手入门及实战指南