5 Java的基本程序设计结构(基本语法4)- 集合之ArryList 和什么是包装类?

文章目录

  • 前言
  • 一、集合
  • 二、基本数据类型的包装类
  • 三、ArryList
    • 1 ArryList对象的创建
    • 2 ArryList常见成员方法
      • (1)boolean add(E e) : 添加元素,返回值表示是否添加成功
      • (2)void add(int index, E e) :在指定索引位置插入元素。
      • (3)boolean remove(E e) : 删除第一个指定元素 e,返回值表示是否删除成功
      • (4)E remove(int index) : 删除指定索引元素,返回被删除元素
      • (5)E set(int index, E e) : 修改指定索引下的元素,返回原来的元素
      • (6)E get(int index) : 获取指定索引处的元素
      • (7)int size() : 返回集合的长度
      • (8)boolean isEmpty() :判断数组列表是否为空。
    • 3 ArryList的遍历
      • (1)使用get()方法遍历
      • (2)使用增强for循环遍历
  • 八、练习
    • 1 学生管理系统(简易版)--- 使用ArrayList还是有一点繁琐,使用字典会好很多。
    • 2 学生管理系统(升级版):在上面简易版的上面继续添加登录注册等功能


前言

一、集合

前面我们学数组的时候,发现数组的一旦创建长度就不可变,很不好用。因此,就有了这里的集合来解决这一缺点。
但很遗憾,虽然集合解决了数组不能自动扩容的缺点,但集合有有新的缺点。

  • 数组: 基本数据类型、引用数据类型都可以存进去(但一个数组里面只能有一种数据类型)
  • 集合:只能存引用数据类型;基本数据类型不能直接存,必须将其变成相对应的包装类才能存。什么是包装类后面会讲

java提供了很多的集合类都符合上述规则,常见的有ArryList, Map , HashSet等等。下面我们依次学习这些常见的数据结构(java集合)。
下面重基本数据类型的包装类开始吧!

二、基本数据类型的包装类

为了解决java集合不能存基本数据类型的缺陷,java提供了基本数据类型的包装类的解决方案。

基本数据类型对应的包装类
byteByte
shortShort
charCharacter
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean

可以看到只有char和int的包装类名有点变化要单独记一下,其余的都是首字母大写就可以了。
具体怎么用的建议先了解ArryList,下面给出示例:包装类就可以添加进集合了,表示方法和普通的写法一样,只是泛型要写包装类就是了。
Integer

ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);for (Integer i : list) {System.out.print(i + " ");   // 1 2 3

Character

ArrayList<Character> list = new ArrayList<>();
list.add('a');
list.add('b');
list.add('c');for (Character i : list) {System.out.print(i + " ");   // a b c
}

三、ArryList

查阅帮助文档可以发现这个类在 java.util包下面

在之前创建数组我们采用的构造方式是 数组类型[] 数组名 = new 数组类型[]{元素1,元素2,元素3…}这种方式,这是独属于数组的构造方式。今后我们大多集合(还有些其他集合使用其他构造方式)都是使用 new + 泛型这种构造方式来创建集合对象。什么是泛型,打开ArryList的帮助文档:
在这里插入图片描述
上面这个<数据类型>括号就是泛型,用来指定集合里面的数据类型的。
了解了泛型就可以往下学习了

1 ArryList对象的创建

  • jdk7前的语法: Array<数据类型> 变量名 = new Array<数据类型> ()
  • jdk7以后的语法: Array<数据类型> 变量名 = new Array<> ()
// ArrayList<String> ls = new ArrayList<String>();
ArrayList<String> ls = new ArrayList<>();ls.add("a");ls.add("b");System.out.println(ls);    // [a, b]

【注】:这个就和Python列表很像了

2 ArryList常见成员方法

【注】:其中E表示ArryList里面元素数据类型 , e表示具体数据元素

(1)boolean add(E e) : 添加元素,返回值表示是否添加成功

(2)void add(int index, E e) :在指定索引位置插入元素。

(3)boolean remove(E e) : 删除第一个指定元素 e,返回值表示是否删除成功

(4)E remove(int index) : 删除指定索引元素,返回被删除元素

(5)E set(int index, E e) : 修改指定索引下的元素,返回原来的元素

(6)E get(int index) : 获取指定索引处的元素

(7)int size() : 返回集合的长度

// ArrayList<String> ls = new ArrayList<String>();
ArrayList<String> ls = new ArrayList<>();
ls.add("aaa");
ls.add("bbb");
ls.add("ccc");
ls.add("aaa");
System.out.println(ls);    // [aaa, bbb, ccc, aaa]ls.remove("aaa");    // 删除第一个aaa
System.out.println(ls);    // [bbb, ccc, aaa]ls.remove(1);    // 删除索引为1的元素
System.out.println(ls);    // [bbb, aaa]ls.set(1, "ddd");    // 修改索引为1的元素
System.out.println(ls);    // [bbb, ddd]System.out.println(ls.get(1));    // ddd
System.out.println(ls.size());    // 2

(8)boolean isEmpty() :判断数组列表是否为空。

这个判断为空有专门方法,没有Python那么方便。
【注】:java中的 逻辑运算符 ! 和Python中的not有同样效果

ArrayList<

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3270182.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

从json到protobuf,接口效率的提升

在express开发的前后端调用中&#xff0c;express作为接收方是不二之选&#xff0c;它有一些很好用的body解析器来解析传入数据&#xff1b;而作为请求发起方&#xff0c;axios是非常方便的&#xff0c;这是一个很好的选择&#xff0c;它可以传输多种类型的数据给接收方。 通常…

Tekion 选择 ClickHouse Cloud 提升应用性能和指标监控

本文字数&#xff1a;4187&#xff1b;估计阅读时间&#xff1a;11 分钟 作者&#xff1a;ClickHouse team 本文在公众号【ClickHouseInc】首发 Tekion 由前 Tesla CIO Jay Vijayan 于 2016 年创立&#xff0c;利用大数据、人工智能和物联网等技术&#xff0c;为其汽车客户解决…

Week 3 DAY 6

Product C - Product (atcoder.jp) 一共N层&#xff0c;对于每一层的每个数&#xff0c;都遍历上一层更新过后的结果&#xff0c;更新为新的结果&#xff0c; 比如样例&#xff1a; 2 40 3 1 8 4 2 10 5动态数组a表示储存上一层除后留下来的数&#xff0c; 第一次a数组中只…

关于开源项目分享的通知

后续会逐步分享更多好用的开源项目&#xff0c;加入圈子&#xff1a; 圈子加入https://pc.fenchuan8.com/#/index?forum86631&yqm5EV39扫码加入&#xff1a;

初识git工具~~上传代码到gitee仓库的方法

目录 1.背景~~其安装 2.gitee介绍 2.1新建仓库 2.2进行相关配置 3.拉取仓库 4.服务器操作 4.1克隆操作 4.2查看本地仓库 4.3代码拖到本地仓库 4.4关于git三板斧介绍 4.4.1add操作 4.4.2commit操作 4.4.3push操作 5.一些其他说明 5.1.ignore说明 5.2git log命令 …

日拱一卒 | JVM

文章目录 什么是JVM&#xff1f;JVM的组成JVM的大致工作流程JVM的内存模型 什么是JVM&#xff1f; 我们知道Java面试&#xff0c;只要你的简历上写了了解JVM&#xff0c;那么你就必然会被问到以下问题&#xff1a; 什么是JVM&#xff1f;简单说一下JVM的内存模型&#xff1f;…

电脑系统安装软件,让系统安装变得更简单。

电脑原版操作系统下载&#xff1a;MSDN系统库 电脑U盘装机pe系统&#xff1a;优启通或微PE工具 驱动安装&#xff1a;360 驱动大师 电脑装机常用软件下载&#xff1a;https://www.bgrdh.com/favorites/7875.html

do while打印1~10

#include<stdio.h> int main() {int i 1;do{printf("%d", i);i;} while (i < 10);return 0; }

【JUC】LockSupport线程等待唤醒

文章目录 LockSupport线程等待唤醒机制三种让线程等待和唤醒的方法Object类中的wait和notify方法实现线程等待和唤醒Condition接口中的await和signal方法实现线程的等待和唤醒上述两种方法使用限制条件LockSupport类中的park等待和unpark唤醒LockSupport 是什么主要方法代码测试…

网易云音乐黑胶VIP会员免费领取入口直达词令是什么?

网易云音乐黑胶VIP会员免费领取是指网易云音乐VIP会员根据不同的等级尊享不同的权益&#xff0c;其中赠送礼品卡就是其一。不同等级的网易云音乐VIP会员可赠送的7天黑胶VIP会员张数不同&#xff0c;但是由于数量有限&#xff0c;每次更新后先领先得&#xff0c;我们将不定期根据…

SpringBoot3:轻松使用Jasypt实现配置文件信息加密

文章目录 前言一、概述1.1 Jasypt库简介1.2 Jasypt库的主要特点 二、开发环境三、Jasypt集成到SpringBoot33.1 引入依赖3.2 配置Jasypt3.3 加密配置文件信息3.3.1 方案一&#xff08;不推荐&#xff09;a.编写测试类生成加密后的配置文件信息b.运行c.修改原本的配置文件信息 3.…

vue实现电子签名、图片合成、及预览功能

业务功能&#xff1a;电子签名、图片合成、及预览功能 业务背景&#xff1a;需求说想要实现一个电子签名&#xff0c;然后需要提供一个预览的功能&#xff0c;可以查看签完名之后的完整效果。 需求探讨&#xff1a;后端大佬跟我说&#xff0c;文档我返回给你一个PDF的oss链接…

开源大模型的格式转成GGUF,并量化后使用ollama推理

https://github.com/ggerganov/llama.cpphttps://github.com/ggerganov/llama.cpp使用到的工具: llama.cpp ollama 步骤 1、下载llama.cpp,并使用make编译 2、新建conda环境,安装llama.cpp里所需的库(requirements.txt) 3、下载需要量化的模型

1. BES2700ZP概述

1. 概述 恒玄BES2700采用RTX5操作系统&#xff0c;配合mindmics算法或者自研算法。 RTX5相关接口可参考&#xff1a;RTX v5 Implementation 2. 芯片框架 2.1 内存 - 4MB 2.2 flash - 8MB

openmv 学习笔记(24电赛笔记)

模版匹配 模版匹配是一种计算机视觉技术&#xff0c;用于图像或者视频中查找特定的模版或者对象&#xff0c;查找模版可以是数字或者是物体&#xff0c;技术通过在目标图像中寻找与模版图像相似的区域来实现匹配。这种技术最早起源在 20世纪70年代 的图像处理领域。 使用模版匹…

《python程序语言设计》第6章14题 估算派值 类似莱布尼茨函数。但是我看不明白

这个题提供的公式我没看明白&#xff0c;后来在网上找到了莱布尼茨函数 c 0 for i in range(1, 902, 100):a (-1) ** (i 1)b 2 * i - 1c a / bprint(i, round(4 / c, 3))结果 #按题里的信息&#xff0c;但是结果不对&#xff0c;莱布尼茨函数到底怎么算呀。

无人机的飞行模式

无人机的飞行模式是提升飞行效率和完成特定任务的关键。现代无人机通常配备多种智能飞行模式&#xff0c;这些模式能够帮助飞行员高效且安全地完成飞行任务。以下是几种常见的无人机飞行模式及其应用场景的解析&#xff1a; 一、跟随模式 应用场景&#xff1a;跟随模式非常适…

【React】详解classnames工具:优化类名控制的全面指南

文章目录 一、classnames的基本用法1. 什么是classnames&#xff1f;2. 安装classnames3. 导入classnames4. classnames的基本示例 二、classnames的高级用法1. 动态类名2. 传递数组3. 结合字符串和对象4. 结合数组和对象 三、实际应用案例1. 根据状态切换类名2. 条件渲染和类名…

Halcon 设置处理区域AOI(用户交互,drawing_object)

主程序 * 1.加载并显示图片 ************************* read_image (Image, ./model)dev_get_window (WindowHandle) set_display_font (WindowHandle, 14, sans, true, false) dev_set_draw (margin) dev_set_line_width (3) dev_display (Image)* 读取字典文件 ************…

35.【C语言】详解函数递归

目录&#xff1a; 定义 作用 例子1~3 拓展学习 趣味练习 1.定义&#xff1a;函数自己调用自己&#xff08;递推回归&#xff09; int main() {main()return 0; } 这样容易死循环&#xff0c;导致爆栈(Stack Overflow) 所以需要设立限制条件&#xff0c;使执行时越来越接近条…