ArrayList类

  • ArrayList类
    • ArrayList类的意义
    • ArrayList使用步骤
    • ArrayList类的常用方法
    • ArrayList如何存储基本数据类型
  • Arrays类
    • Arrays类概述
    • Arrays类相关类的使用方法

ArrayList类

ArrayList类的意义

对于对象这个数据单元,我们要向集中处理,就只能创建对象数组的方式,例如:

package cn.itcast.day07.demo04;/*
题目:
定义一个数组,用来存储3个Person对象。数组有一个缺点:一旦创建,程序运行期间长度不可以发生改变。*/
public class Demo01Array {public static void main(String[] args) {// 首先创建一个长度为3的数组,里面用来存放Person类型的对象Person[] array = new Person[3];Person one = new Person("迪丽热巴", 18);Person two = new Person("古力娜扎", 28);Person three = new Person("玛尔扎哈", 38);// 将one当中的地址值赋值到数组的0号元素位置array[0] = one;array[1] = two;array[2] = three;System.out.println(array[0]); // 地址值System.out.println(array[1]); // 地址值System.out.println(array[2]); // 地址值System.out.println(array[1].getName()); // 古力娜扎}}

到目前为止,我们想存储对象数据,选择的容器,只有对象数组。而数组的长度是固定的,无法适应数据变化的需 求。为了解决这个问题,Java提供了另一个容器 java.util.ArrayList 集合类,让我们可以更便捷的存储和操作对 象数据。

java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素。此类提供一些方法来操作内部存储 的元素。 ArrayList 中可不断添加元素,其大小也自动增长。

ArrayList使用步骤

查看类

  java.util.ArrayList <E> :

该类需要 import导入使后使用。 <E> 表示一种指定的数据类型,叫做泛型。 E ,取自Element(元素)的首字母。在出现 E 的地方,我们使 用一种引用数据类型将其替换即可,表示我们将存储哪种引用类型的元素。
ArrayList<String>,ArrayList<Student>
代码如下: 查看构造方法

public ArrayList()//构造一个内容为空的集合。
ArrayList<String> list = new ArrayList<String>();

基本格式: 在JDK 7后,右侧泛型的尖括号之内可以留空,但是<>仍然要写。简化格式:ArrayList<String> list = new ArrayList<>();
查看成员方法
public boolean add(E e) : 将指定的元素添加到此集合的尾部。 参数 E e ,在构造ArrayList对象时, 指定了什么数据类型,那么 add(E e) 方法中,只能添加什么数据 类型的对象。 使用ArrayList类,存储三个字符串元素,代码如下:

package cn.itcast.day07.demo04;import java.util.ArrayList;/*
数组的长度不可以发生改变。
但是ArrayList集合的长度是可以随意变化的。对于ArrayList来说,有一个尖括号<E>代表泛型。
泛型:也就是装在集合当中的所有元素,全都是统一的什么类型。
注意:泛型只能是引用类型,不能是基本类型。注意事项:
对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。
如果内容是空,得到的是空的中括号:[]*/
public class Demo02ArrayList {public static void main(String[] args) {// 创建了一个ArrayList集合,集合的名称是list,里面装的全都是String字符串类型的数据// 备注:从JDK 1.7+开始,右侧的尖括号内部可以不写内容,但是<>本身还是要写的。ArrayList<String> list = new ArrayList<>();System.out.println(list); // []// 向集合当中添加一些数据,需要用到add方法。list.add("赵丽颖");System.out.println(list); // [赵丽颖]list.add("迪丽热巴");list.add("古力娜扎");list.add("玛尔扎哈");System.out.println(list); // [赵丽颖, 迪丽热巴, 古力娜扎, 玛尔扎哈]//        list.add(100); // 错误写法!因为创建的时候尖括号泛型已经说了是字符串,添加进去的元素就必须都是字符串才行}}

ArrayList类的常用方法

对于元素的操作,基本体现在——增、删、查。常用的方法有:
public boolean add(E e) :将指定的元素添加到此集合的尾部。
public E remove(int index) :移除此集合中指定位置上的元素。返回被删除的元素。
public E get(int index) :返回此集合中指定位置上的元素。返回获取的元素。
public int size() :返回此集合中的元素数。遍历集合时,可以控制索引范围,防止越界。 这些都是最基本的方法,操作非常简单,代码如下:

package cn.itcast.day07.demo04;import java.util.ArrayList;/*
ArrayList当中的常用方法有:public boolean add(E e):向集合当中添加元素,参数的类型和泛型一致。返回值代表添加是否成功。
备注:对于ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用。
但是对于其他集合(今后学习)来说,add添加动作不一定成功。public E get(int index):从集合当中获取元素,参数是索引编号,返回值就是对应位置的元素。public E remove(int index):从集合当中删除元素,参数是索引编号,返回值就是被删除掉的元素。public int size():获取集合的尺寸长度,返回值是集合中包含的元素个数。*/
public class Demo03ArrayListMethod {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();System.out.println(list); // []// 向集合中添加元素:addboolean success = list.add("柳岩");System.out.println(list); // [柳岩]System.out.println("添加的动作是否成功:" + success); // truelist.add("高圆圆");list.add("赵又廷");list.add("李小璐");list.add("贾乃亮");System.out.println(list); // [柳岩, 高圆圆, 赵又廷, 李小璐, 贾乃亮]// 从集合中获取元素:get。索引值从0开始String name = list.get(2);System.out.println("第2号索引位置:" + name); // 赵又廷// 从集合中删除元素:remove。索引值从0开始。String whoRemoved = list.remove(3);System.out.println("被删除的人是:" + whoRemoved); // 李小璐System.out.println(list); // [柳岩, 高圆圆, 赵又廷, 贾乃亮]// 获取集合的长度尺寸,也就是其中元素的个数int size = list.size();System.out.println("集合的长度是:" + size);}}

遍历算法:

package cn.itcast.day07.demo04;import java.util.ArrayList;public class Demo04ArrayListEach {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("迪丽热巴");list.add("古力娜扎");list.add("玛尔扎哈");// 遍历集合for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}}}

ArrayList如何存储基本数据类型

ArrayList对象不能存储基本类型,只能存储引用类型的数据。类似 <int> 不能写,但是存储基本数据类型对应的 包装类型是可以的。所以,想要存储基本类型数据, <> 中的数据类型,必须转换后才能编写,转换写法如下

package cn.itcast.day07.demo04;import java.util.ArrayList;/*
如果希望向集合ArrayList当中存储基本类型数据,必须使用基本类型对应的“包装类”。基本类型    包装类(引用类型,包装类都位于java.lang包下)
byte        Byte
short       Short
int         Integer     【特殊】
long        Long
float       Float
double      Double
char        Character   【特殊】
boolean     Boolean从JDK 1.5+开始,支持自动装箱、自动拆箱。自动装箱:基本类型 --> 包装类型
自动拆箱:包装类型 --> 基本类型*/
public class Demo05ArrayListBasic {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);}}

Arrays类

Arrays类概述

java.util.Arrays 此类包含用来操作数组的各种方法,比如排序和搜索等。其所有方法均为静态方法,调用起来非常简单

Arrays类相关类的使用方法

public static String toString(int[] a) :返回指定数组内容的字符串表示形式。

package cn.itcast.day08.demo04;import java.util.Arrays;public class Demo01Arrays {public static void main(String[] args) {int[] intArray = {10, 20, 30};// 将int[]数组按照默认格式变成字符串String intStr = Arrays.toString(intArray);System.out.println(intStr); // [10, 20, 30]int[] array1 = {2, 1, 3, 10, 6};Arrays.sort(array1);System.out.println(Arrays.toString(array1)); // [1, 2, 3, 6, 10]String[] array2 = {"bbb", "aaa", "ccc"};Arrays.sort(array2);System.out.println(Arrays.toString(array2)); // [aaa, bbb, ccc]}}

public static String toString(数组):将参数数组变成字符串(按照默认格式:[元素1, 元素2, 元素3…])
public static void sort(数组):按照默认升序(从小到大)对数组的元素进行排序。

备注:

  1. 如果是数值,sort默认按照升序从小到大
  2. 如果是字符串,sort默认按照字母升序
  3. 如果是自定义的类型,那么这个自定义的类需要有Comparable或者Comparator接口的支持。(今后学习)

练习案例:

package cn.itcast.day08.demo04;import java.util.Arrays;/*
题目:
请使用Arrays相关的API,将一个随机字符串中的所有字符升序排列,并倒序打印。*/
public class Demo02ArraysPractise {public static void main(String[] args) {String str = "asv76agfqwdfvasdfvjh";// 如何进行升序排列:sort// 必须是一个数组,才能用Arrays.sort方法// String --> 数组,用toCharArraychar[] chars = str.toCharArray();Arrays.sort(chars); // 对字符数组进行升序排列// 需要倒序遍历for (int i = chars.length - 1; i >= 0; i--) {System.out.println(chars[i]);}}}

Java基础:ArrayList类和Arrays类相关推荐

  1. Java基础学习——第十章 枚举类注解

    Java基础学习--第十章 枚举类&注解 一.枚举类(enum) 1. 枚举类的概念 枚举类:类的对象只有有限个,确定的 线程状态:创建.就绪.运行.阻塞.死亡 当需要定义一组常量时,强烈建议 ...

  2. Java基础语法(七)——类和对象

    文章目录 Java基础语法(七)--类和对象 一.类和对象的初步认识 二. 类和类的实例化 1.类的定义 2.实例化对象 3.如何使用类中的数据 三. 类的成员 1. 字段/属性/成员变量 (1)实例 ...

  3. java基础 ArrayList集合基本方法演示

    java基础 ArrayList集合基本方法演示 import java.util.ArrayList; import java.util.Iterator;public class ArrayLis ...

  4. Java基础知识学习04-自定义类、ArrayList集合

    类与对象 类是一个模子,确定对象将会拥有的特征(属性)和行为(方法). 类的特征:类是对象的类型 具有相同属性和方法的一组对象的集合 类的组成:属性和方法 定义一个类:public class  类名 ...

  5. Java基础巩固(一)类,接口,枚举,常用API,集合,泛型,正则,数据结构

    一.static.final.权限关键字,代码块,接口,枚举 1 关键字 2 代码块 3 接口 4 枚举 idea快捷键 shift + enter 换行 ctrl + Alt + shift + U ...

  6. java基础--IO流之File类

    一.File类概述 用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作,File对象可以作为参数传递给流的构造函数 二.File类常见方法: 1,创建 boolean createN ...

  7. java基础(1)-几种获取类的扩展方式

    摘要 在日常开发过程中经常需要获取类的扩展集.即获取类的子类集(抽象类),或者接口实现类.比如说状态模式中,状态构建类,策略模式中的,策略构造方式.本文介绍几种获取方式. 实现 以策略模式为例 定义了 ...

  8. Java基础——数组应用之StringBuilder类和StringBuffer类

    接上文:Java基础--数组应用之字符串String类 一.StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和 ...

  9. Java基础教程(12)--深入理解类

    一.方法的返回值   当我们在程序中调用方法时,虚拟机将会跳转到对应的方法中去执行.当以下几种情况发生时,虚拟机将会回到调用方法的语句并继续向下执行: 执行完方法中所有的语句: 遇到return语句: ...

最新文章

  1. 获取枚举类型的 中文 描述 和值
  2. openCV基础数据结构介绍
  3. opencv连通域去除小块面积_晋中市建成区面积排名,榆次区最大,榆社县最小,来了解一下?...
  4. 期末计算机考试五五开要考多少分,大学平时分加上末考分过了多少算不挂科
  5. Redis流水线性能提高
  6. 联邦快递“误运”华为包裹遭调查 联邦快递:全力配合
  7. 【Java集合的详细研究4】Java中如何遍历Map对象的4种方法
  8. 数据挖掘概念与技术学习笔记(1)
  9. 车型代号对照表_车型代号对照表2015Q3
  10. ChineseBERT Chinese Pretraining Enhanced by Glyph and Pinyin Information
  11. B2C商家怎样在有限的预算下展开营销
  12. 使用搜索引擎时如何去除广告推荐
  13. 游戏服务端框架之配置与玩家数据库设计
  14. 雷顿学院大数据(一期课程)
  15. CentOS7中怎样设置静态IP
  16. python自动求梯度
  17. 光遇显示服务器已满怎么办,sky光遇服务器已满怎么办_sky光遇服务器已满解决方法介绍-星芒手游网...
  18. bp验证码爆破插件二改
  19. SpringBoot整合Elasticsearch详细步骤以及代码示例(附源码)
  20. 推荐好用的开源 Docker 工具

热门文章

  1. Node.js与JavaScript的区别?
  2. RsyncInotify
  3. linux中的inotify
  4. 理财公司中宏涌晟短期投资理财产品的特点
  5. n个结点的完全二叉树存放在一维数组A[1..n]中,试据此建立一棵用二叉链表表示的二叉树,根由tree指向
  6. 雷电模拟器详细安装流程
  7. Python基础知识点总结13张思维导图(附全套教程)
  8. IDEA 编写 SpringBoot 项目自动编译刷新
  9. 解决-BASH: /xxx/Jxxx/JDK1.8.0_221/BIN/JAVA: 权限不够问题
  10. 【微信小程序】WXSS 模板样式