Java之ArrayList类(集合)
集合的由来
我们想存储多个数据,选择的容器可以是数组。而数组的长度是固定的,无法适应数据变化的需求。为了解决这个问题,Java提供了另一个容器 java.util.ArrayList 集合类,让我们可以更便捷的存储和操作对象数据。数组的长度不可以发生改变。但是ArrayList集合的长度是可以随意变化的。
ArrayList类概述
ArrayList使用步骤
查看类
- java.util.ArrayList <E> :该类需要 import导入使后使用。<E> ,表示一种指定的数据类型,叫做泛型。 E ,取自Element(元素)的首字母。在出现 E 的地方,我们使用一种引用数据类型将其替换即可,表示我们将存储哪种引用类型的元素。
- public ArrayList() :构造一个内容为空的集合。
- //创建一个泛型为String的ArrayList集合
- ArrayList<String> arrayList = new ArrayList<String>();
- //创建一个泛型为String的ArrayList集合
- ArrayList<String> arrayList = new ArrayList<>();
- public boolean add(E e) : 将指定的元素添加到此集合的尾部。参数 E e ,在构造ArrayList对象时, <E> 指定了什么数据类型,那么 add(E e) 方法中,只能添加什么数据类型的对象。对于ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用。但是对于其他集合(今后学习)来说,add添加动作不一定成功。
- public E get(int index):从集合当中获取元素,参数是索引编号,返回值就是对应位置的元素。
- public E remove(int index):从集合当中删除元素,参数是索引编号,返回值就是被删除掉的元素。
- public int size():获取集合的尺寸长度,返回值是集合中包含的元素个数。
- package MyCode;
- import java.util.ArrayList;
- public class ArrayListMethod {
- public static void main(String[] args) {
- //创建集合对象
- ArrayList<String> list = new ArrayList<String>();
- //添加元素
- list.add("hello");
- list.add("world");
- list.add("I");
- list.add("love");
- list.add("java");
- //public E get(int index):返回指定索引处的元素
- System.out.println("get的元素:" + list.get(3));
- //public int size():返回集合中的元素的个数
- System.out.println("集合中元素的个数:" + list.size());
- //public E remove(int index):删除指定索引处的元素,返回被删除的元素
- System.out.println("删除的指定index元素:" + list.remove(0));
- //遍历输出
- for (int i = 0; i < list.size(); i++) {
- System.out.println(list.get(i));
- }
- }
- }
代码执行后的结果
包装类概述

- 装箱:从基本类型转换为对应的包装类对象。
- 拆箱:从包装类对象转换为对应的基本类型。
- Integer i = 4;//自动装箱。相当于Integer i = Integer.valueOf(4);
- i = i + 5;//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5;
- //加法运算完成后,再次装箱,把基本数值转成对象。
基本类型与字符串之间的转换
基本类型转换为String
- 基本类型与字符串之间的转换三种方式,最简单的一种方式:基本类型直接与””相连接即可;如:34+""
String转换成对应的基本类型
除了Character类之外,其他所有包装类都具有parseXxx静态方法可以将字符串参数转换为对应的基本类型:
- public static byte parseByte(String s):将字符串参数转换为对应的byte基本类型。
- public static short parseShort(String s):将字符串参数转换为对应的short基本类型。
- public static int parseInt(String s):将字符串参数转换为对应的int基本类型。
- public static long parseLong(String s):将字符串参数转换为对应的long基本类型。
- public static float parseFloat(String s):将字符串参数转换为对应的float基本类型。
- public static double parseDouble(String s):将字符串参数转换为对应的double基本类型。
- public static boolean parseBoolean(String s):将字符串参数转换为对应的boolean基本类型。
Integer类的静态方法parseXxx为例
- public class Demo18WrapperParse {
- public static void main(String[] args) {
- int num = Integer.parseInt("100");
- }
- }
注意:
如果字符串参数的内容无法正确转换为对应的基本类型,则会抛出java.lang.NumberFormatException异常。
如何存储基本数据类型
ArrayList对象不能存储基本类型,只能存储引用类型的数据。类似 <int> 不能写,但是存储基本数据类型对应的包装类型是可以的。所以,想要存储基本类型数据, <> 中的数据类型,必须是基本类型的包装类。
- package MyCode;
- import java.util.ArrayList;
- /*
- 如果希望向集合ArrayList当中存储基本类型数据,必须使用基本类型对应的“包装类”。
- */
- public class MyArrayListBasic {
- public static void main(String[] args) {
- ArrayList<String> listA = new ArrayList<>();
- // 错误写法!泛型只能是引用类型,不能是基本类型
- // ArrayList<int> listB = new ArrayList<>();
- //泛型:只能是包装类
- ArrayList<Integer> listC = new ArrayList<>();
- //自动装箱
- listC.add(100);
- listC.add(200);
- System.out.println(listC); // [100, 200]
- //自动拆箱
- int num = listC.get(1);
- System.out.println("第1号元素是:" + num);
- }
- }
代码执行后的结果
ArrayList练习
用一个大集合存入1到1000之间的20个随机数字,,然后筛选其中的偶数元素,放到小集合当中。要求使用自定义的方法来实现筛选。
分析:
- 需要创建一个大集合,用来存储int数字:<Integer>
- 随机数字就用Random nextInt
- 循环20次,把随机数字放入大集合:for循环、add方法
- 定义一个方法,用来进行筛选。筛选:根据大集合,筛选符合要求的元素,得到小集合。方法三要素:返回值类型,方法名称,参数列表。
- 判断(if)是偶数:num % 2 == 0
- 如果是偶数,就放到小集合当中,否则不放。
代码实现
- package demo05;
- import java.util.ArrayList;
- import java.util.Random;
- public class MyArrayList {
- public static void main(String[] args) {
- // 创建Random 对象
- Random random = new Random();
- // 创建ArrayList 对象
- ArrayList<Integer> list = new ArrayList<>();
- // 添加随机数到集合
- for (int i = 0; i < 20; i++) {
- int r = random.nextInt(1000) + 1;
- list.add(r);
- }
- // 调用偶数集合的方法
- ArrayList<Integer> arrayList = getArrayList(list);
- System.out.println(arrayList);
- }
- public static ArrayList<Integer> getArrayList(ArrayList<Integer> list) {
- // 创建小集合,来保存偶数
- ArrayList<Integer> smallList = new ArrayList<>();
- // 遍历list
- for (int i = 0; i < list.size(); i++) {
- // 获取元素
- Integer num = list.get(i);
- // 判断为偶数,添加到小集合中
- if (num % 2 == 0) {
- smallList.add(num);
- }
- }
- // 返回小集合
- return smallList;
- }
- }
代码执行后的结果
注意
java.util.ArrayList 集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能为 查询数据、遍历数据,所以 ArrayList 是最常用的集合。 许多程序员开发时非常随意地使用ArrayList完成任何需求,并不严谨,这种用法是不提倡
Java之ArrayList类(集合)的更多相关文章
- Java开发工具类集合
Java开发工具类集合 01.MD5加密工具类 import java.security.MessageDigest; import java.security.NoSuchAlgorithmExce ...
- Java:ArrayList类小记
Java:ArrayList类小记 对 Java 中的 ArrayList类,做一个微不足道的小小小小记 概述 java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素. ...
- Java API —— ArrayList类 & Vector类 & LinkList类
1.ArrayList类 1)ArrayList类概述 · 底层数据结构是数组,查询快,增删慢 · 线程不安全,效率高 2)ArrayList案例 ...
- Java中ArrayList类详解
1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...
- JDK1.8源码(五)——java.util.ArrayList 类
关于 JDK 的集合类的整体介绍可以看这张图,本篇博客我们不系统的介绍整个集合的构造,重点是介绍 ArrayList 类是如何实现的. 1.ArrayList 定义 ArrayList 是一个用数组实 ...
- Java中ArrayList类
ArratList 类:存放同一数据类型容器(只能为引用数据类型,因实际其内部存放的是地址) 1.导入其所在包 import java.util.ArratList 2.创建对象 ArrayList& ...
- Java中 ArrayList类常用方法和遍历
ArrayList类对于元素的操作,基本体现在——增.删.查.常用的方法有: public boolean add(E e) :将指定的元素添加到此集合的尾部. public E remove(in ...
- Java中 ArrayList类的使用
java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素.此类提供一些方法来操作内部存储 的元素. ArrayList 中可不断添加元素,其大小也自动增长. ArrayL ...
- [转] Java中ArrayList类的用法
1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...
随机推荐
- 【全栈修炼】OAuth2 修炼宝典
一.OAuth 概念 开放授权(OAuth)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. -- 维基百 ...
- 深入浅出Object.defineProperty()
深入浅出Object.defineProperty() 红宝书对应知识点页码:139页 红宝书150页:hasOwnProperty( )方法可以检测一个属性是存在于实例中,还是存在于原型中,给定属性 ...
- 在 VSCode 中 Angular 的字符串报错的问题
使用 Angular 时,报错 [tslint] " should be ' 报错原因是因为 ESLint 的严格模式,限制了使用 ' ,甚至多一个空格都会报错. 我们只需要在 settin ...
- matplotlib可视化最全指南
1. 折线图:plt.plot 设置数据:plt.plot(x,y),单列数据传入默认y轴,此时x轴数据默认从0逐渐对应递增 设置颜色:plt.plot(x,y,color/c=" &quo ...
- python的tqdm模块介绍
https://www.jianshu.com/p/b27318efdb7b Tqdm 是 Python 进度条库,可以在 Python 长循环中添加一个进度提示信息用法:tqdm(iterator) ...
- 守护线程,需要通过调用线程方法:setDaemon(boolean on)来进行设置
package seday08.thread;/*** @author xingsir * 守护线程又称为后台线程,默认创建出来的线程都是普通线程, 守护线程需要通过调用线程方法:setDaemon( ...
- 用js写一个鼠标坐标实例
HTML代码 写一个div来作为鼠标区域 div中写一个span显示坐标信息 <body> <div id=""> <span></spa ...
- 15.junit测试类使用及注解
1.junit简介 JUnit是一个Java语言的单元测试框架,可以大大缩短你的测试时间和准确度.多数Java的开发环境都已经集成了JUnit作为单元测试的工具. 2.实现junitDemo示例 2. ...
- CentOS 上配置 lua 的服务器环境(enet)
安装 lua & luarocket 安装依赖 $ yum install gcc gcc-c++ kernel-devel $ yum install readline-dev $ yum ...
- numpy输出有省略号的问题
发现很多文章都说加一句 np.set_printoptions(threshold="nan") 或者 np.set_printoptions(threshold=np.nan) ...