java arraylist用法_Java入门系列:实例讲解ArrayList用法
本文通过实例讲解Java中如何使用ArrayList类。
Java.util.ArrayList类是一个动态数组类型,也就是说,ArrayList对象既有数组的特征,也有链表的特征。可以随时从链表中添加或删除一个元素。ArrayList实现了List接口。
大家知道,数组是静态的,数组被初始化之后,数组长度就不能再改变了。ArrayList是可以动态改变大小的。那么,什么时候使用Array(数组),什么时候使用ArrayList?答案是:当我们不知道到底有多少个数据元素的时候,就可使用ArrayList;如果知道数据集合有多少个元素,就用数组。
1.ArrayList构造函数
ArrayList类支持3个构造方法。
Arraylist()
这个构造方法构造了一个空的链表。
ArrayList(Collection extends E> c)
这个构造方法构造了一个包含指定元素集合的链表,注意,这里的字符E是一个标记,用来表示集合中元素的类型。至于具体是什么类型,需要你在使用这个构造方法的时候来指定。
ArrayList(int initialCapacity)
这是第三个构造方法,构造了一个指定大小但内容为空的链表。initialCapacity参数就是初始容量大小。
举例来说,如果你要创建一个空的数组链表,用来存放String类型的对象,那么你可以像下面这样做:
ArrayList list = new ArrayList();
如果你需要创建一个指定初始容量的数组链表,你可以像下面这样做:
ArrayList list = new ArrayList(7);
注意:ArrayList类只支持对象类型,不支持 基础数据类型。就是说ArrayList对象只能存放对象,不能存放基础数据类型的数据。
2.ArrayList常用方法
下面是总结了一些比较常用的ArrayList类成员方法:
增加元素到链表中
boolean add(Element e)
增加指定元素到链表尾部.
void add(int index, Element e)
增加指定元素到链表指定位置.
从链表中删除元素
void clear()
从链表中删除所有元素.
E remove(int index)
删除链表中指定位置的元素.
protected void removeRange(int start, int end)
删除链表中从某一个位置开始到某一个位置结束的元素。
获取链表中的元素
E get(int index)
获取链表中指定位置处的元素.
Object[] toArray()
获取一个数组,数组中所有元素是链表中的元素.(即将链表转换为一个数组)
修改某个元素
E set(int index, E element)
将链表中指定位置上的元素替换成新元素。
搜索元素
boolean contains(Object o)
如果链表包含指定元素,返回true.
int indexOf(Object o)
返回元素在链表中第一次出现的位置,如果返回-1,表示链表中没有这个元素。
int lastIndexOf(Object o)
返回元素在链表中最后一次出现的位置,如果返回-1,表示链表中没有这个元素。
检查链表是否为空
boolean isEmpty()
返回true表示链表中没有任何元素.
获取链表大小
int size()
返回链表长度(链表包含元素的个数).
以上是ArrayList类中使用比较多的成员方法。每个方法的更详细的说明或其它没有提及到的方法,读者可以参考java官方api
3.ArrayList使用实例
1 import java.util.*;2
3 public classArrayListExamples {4
5 public static voidmain(String args[]) {6 //创建一个空的数组链表对象list,list用来存放String类型的数据
7 ArrayList list = new ArrayList();8
9 //增加元素到list对象中
10 list.add("Item1");11 list.add("Item2");12 list.add(2, "Item3"); //此条语句将会把“Item3”字符串增加到list的第3个位置。
14 list.add("Item4");15
16 //显示数组链表中的内容
17 System.out.println("The arraylist contains the following elements: "
18 +list);19
20 //检查元素的位置
21 int pos = list.indexOf("Item2");22 System.out.println("The index of Item2 is: " +pos);23
24 //检查数组链表是否为空
25 boolean check =list.isEmpty();26 System.out.println("Checking if the arraylist is empty: " +check);27
28 //获取链表的大小
29 int size =list.size();30 System.out.println("The size of the list is: " +size);31
32 //检查数组链表中是否包含某元素
33 boolean element = list.contains("Item5");34 System.out35 .println("Checking if the arraylist contains the object Item5: "
36 +element);37
38 //获取指定位置上的元素
39 String item = list.get(0);40 System.out.println("The item is the index 0 is: " +item);41
42 //遍历arraylist中的元素43
44 //第1种方法: 循环使用元素的索引和链表的大小
45 System.out46 .println("Retrieving items with loop using index and size list");47 for (int i = 0; i < list.size(); i++) {48 System.out.println("Index: " + i + " - Item: " +list.get(i));49 }50
51 //第2种方法:使用foreach循环
52 System.out.println("Retrieving items using foreach loop");53 for(String str : list) {54 System.out.println("Item is: " +str);55 }56
57 //第三种方法:使用迭代器58 //hasNext(): 返回true表示链表链表中还有元素59 //next(): 返回下一个元素
60 System.out.println("Retrieving items using iterator");61 for (Iterator it =list.iterator(); it.hasNext();) {62 System.out.println("Item is: " +it.next());63 }64
65 //替换元素
66 list.set(1, "NewItem");67 System.out.println("The arraylist after the replacement is: " +list);68
69 //移除元素70 //移除第0个位置上的元素
71 list.remove(0);72
73 //移除第一次找到的 "Item3"元素
74 list.remove("Item3");75
76 System.out.println("The final contents of the arraylist are: " +list);77
78 //转换 ArrayList 为 Array
79 String[] simpleArray = list.toArray(newString[list.size()]);80 System.out.println("The array created after the conversion of our arraylist is: "
81 +Arrays.toString(simpleArray));82 }83 }
java arraylist用法_Java入门系列:实例讲解ArrayList用法相关推荐
- java 内存分配实例_java内存管理实例讲解
一.java虚拟机运行时内存分配图 二.栈 堆 方法区简介 1.栈 1. 每个方法被调用都会创建一个栈帧(存储局部变量.操作数.方法出口等) 2. JVM为每个线程创建一个栈,用于存放该线程执行方法的 ...
- java spring hiberate_Spring+SpringMVC+Hibernate整合实例讲解
使用Maven构建项目,用pom.xml引入相应jar,配置以下文件 创建spring.xml: xmlns="http://www.springframework.org/schema/b ...
- map java 用法_java中map 9种常规用法
通常来说,Map是一个由键值对组成的数据结构,且在集合中每个键是唯一的.下面就以K和V来代表键和值,来说明一下java中关于Map的九大问题. 0.将Map转换为List类型 在java中Map接口提 ...
- java 记牌_JAVA入门第三季——简易扑克牌
package PlayingCards; /** * * * 定义扑克牌类 * @author Administration * */ public class Card { private int ...
- 【智能算法】粒子群算法(Particle Swarm Optimization)超详细解析+入门代码实例讲解...
喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由E ...
- java try 的用法_java try(){}catch(){}自动释放资源及用法
java语言中try(){}catch(){}的用法介绍.介绍了通常的try-catch的用法以及 try-with-resources 的用法. 1.try{} catch(){}的用法 通常try ...
- javamap的用法_Java Map常用的几种用法。
Java Map常用的几种用法. 通常,Map是由一组键值对组成的数据结构,每个键只能在映射中出现一次.这篇文章总结了有关如何使用Java Map及其实现的类的前9个常见问题解答.为了简单起见,我将在 ...
- java $ 用法_Java的Volatile实例用法及讲解
在原子性.可见性.有序性中,volatile关键字主要在可见性中发挥作用. volatile声明的变量对所有线程来说是可见的,就是说当变量的值发生改变的时候,其他线程可以立马发现这个变化. publi ...
- java reduce的用法_Java 8系列之Stream中万能的reduce用法说明
reduce 操作可以实现从Stream中生成一个值,其生成的值不是随意的,而是根据指定的计算模型.比如,之前提到count.min和max方法,因为常用而被纳入标准库中.事实上,这些方法都是redu ...
最新文章
- spring3.0设置定时任务
- [html] 编写html时,你有没有用过Emmet插件呢?说说它的优点及规则有哪些?
- HDOJ 汉诺塔系列(递推分析)
- 阿里云郑晓:浅谈GPU虚拟化技术(第四章)
- 写作专用各种表情和符号,使你的文章更加美观有趣!❤️❤️❤️
- python绘制彩色地震剖面断层解释_地震剖面上的断层分析及相关意义
- sort()与拉姆达表达式
- CSDN拒绝好友的私信内容信息太弓虽了
- JAVA---集合子接口之Set
- Django自学——笔记7(数据库、图书管理系统)
- 消失的数字(C语言)
- Springboot企业工资管理rycxe计算机毕业设计-课程设计-期末作业-毕设程序代做
- 电影解说都是怎么配音的?电影解说配音实战教程
- PC端本地存储方案,Windows和Mac双端通用方案
- 阿里云跨境游戏及电商网络加速方案(全球加速和CDN)
- 在下列用户中什么管理计算机的权限最小,计算机网络管理员考试试题和答案
- x265工程简介、编译、调试测试
- 天才小毒妃 第973章 韩芸汐,救我
- 尚硅谷 宋红康 JVM教程_01_内存与垃圾回收篇——02
- wordpress教程 – 修改增加默认文章阅读量的最简单办法