Java:ArrayList的基本使用(学习笔记)
集合和数组的对比(为什么要有集合)
分为俩点
1. 长度:数组的长度是固定的,集合的长度是可变的。
2. 存储类型:
数组:可以存储基本数据类型,引用数据类型。
集合:只能存储引用数据类型。
小tips:
基本数据类型在集合中存储要使用包装类。
基本数据类型对应的包装类如下:
byte => Byte short => Short
int => Integer long => Long
float => Float double => Double
boolean => Boolean
char => Character
泛型
new ArrayList<泛型>();
泛型就是限定集合中存储数据的类型
ArrayList成员方法
集合的常用的成员方法主要就是增删改查
E为泛型的类型
boolean add(E e); 添加元素,返回true或false
boolean remove(E e); 删除元素
E remove(int index); 删除指定索引的元素,返回删除的元素
E set(int index,E e); 修改指定索引的元素,返回修改前的元素
E get(int index); 获取指定索引的元素
int size(); 返回集合的长度,也就是集合中元素的个数
附上例题
1.现有如下字符串元素:["aaa", "bbb", "aaa", "aaa", "ccc", "bbb"],请将所有的元素按顺序存入ArrayList集合中,并遍历集合查看存储结果。
//现有如下字符串元素:["aaa", "bbb", "aaa", "aaa", "ccc", "bbb"],请将所有的元素按顺序存入ArrayList集合中,并遍历集合查看存储结果。
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("aaa");
list.add("ccc");
list.add("bbb");
StringJoiner sj = new StringJoiner(", ", "[", "]");
for (int i = 0; i < list.size(); i++) {
sj.add(list.get(i));
}
System.out.println(sj);
}
2. 请定义教师(Teacher)类,属性包含姓名和专业名称。将若干教师对象存入ArrayList集合中,并遍历集合打印教师信息
domain:
public class Teacher {
private String name;
private String course;
public Teacher() {
}
public Teacher(String name, String course) {
this.name = name;
this.course = course;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return course
*/
public String getCourse() {
return course;
}
/**
* 设置
* @param course
*/
public void setCourse(String course) {
this.course = course;
}
public String toString() {
return "Teacher{name = " + name + ", course = " + course + "}";
}
}
main:
//请定义教师(Teacher)类,属性包含姓名和专业名称。将若干教师对象存入ArrayList集合中,并遍历集合打印教师信息,格式如下
//姓名:赵老师, 专业:javase
//姓名:钱老师, 专业:javaee
//姓名:孙老师, 专业:php
//姓名:李老师, 专业:python
public static void main(String[] args) {
ArrayList<Teacher> list = new ArrayList<>();
list.add(new Teacher("xiaowang", "java"));
list.add(new Teacher("xiaoming", "python"));
list.add(new Teacher("xiaosu", "c++"));
for (int i = 0; i < list.size(); i++) {
System.out.println("姓名:" + list.get(i).getName() + "\t" + "课程:" + list.get(i).getCourse());
}
}
3.
有如下员工信息:
姓名:张三,工资:3000
姓名:李四,工资:3500
姓名:王五,工资:4000
姓名:赵六,工资:4500
姓名:田七,工资:5000
先需要将所有的员工信息都存入ArrayList集合中,并完成如下操作:
1、判断是否有姓名为“王五”的员工,如果有,改名为“王小五”
2、判断是否有姓名为“赵六”的员工,如果有,将其删除
3、给姓名为“田七”的员工,涨500工资
domain:
public class Worker {
private String name;
private int salary;
public Worker() {
}
public Worker(String name, int salary) {
this.name = name;
this.salary = salary;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return salary
*/
public int getSalary() {
return salary;
}
/**
* 设置
* @param salary
*/
public void setSalary(int salary) {
this.salary = salary;
}
public String toString() {
return "Worker{name = " + name + ", salary = " + salary + "}";
}
}
main:
public static void main(String[] args) {
ArrayList<Worker> list = new ArrayList<>();
list.add(new Worker("张三",3000));
list.add(new Worker("李四",3500));
list.add(new Worker("王五",4000));
list.add(new Worker("赵六",4500));
list.add(new Worker("田七",5000));
//1.
if(contain(list,"王五")) {
int index = getIndex(list, "王五");
Worker worker = list.get(index);
worker.setName("王小五");
System.out.println(worker.toString());
}
//2.
if(contain(list,"赵六")) {
int index = getIndex(list, "赵六");
Worker worker = list.remove(index);
System.out.println(worker.toString());
}
//3.
if(contain(list,"田七")) {
int index = getIndex(list, "田七");
Worker worker = list.remove(index);
int salary = worker.getSalary() + 500;
worker.setSalary(salary);
System.out.println(worker.toString());
}
}
//是否存在
public static boolean contain(ArrayList<Worker> list,String name) {
return getIndex(list,name) > 0;
}
//获取元素的索引 存在返回索引,不存在返回-1
public static int getIndex(ArrayList<Worker> list,String name) {
for (int i = 0; i < list.size(); i++) {
Worker worker = list.get(i);
if(worker.getName().equals(name)){
return i;
}
}
return -1;
}
Java:ArrayList的基本使用(学习笔记)的更多相关文章
- Java程序猿的JavaScript学习笔记(汇总文件夹)
最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...
- Java程序猿的JavaScript学习笔记(8——jQuery选择器)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿的JavaScript学习笔记(3——this/call/apply)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿的JavaScript学习笔记(1——理念)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿的JavaScript学习笔记(9—— jQuery工具方法)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿的JavaScript学习笔记(6——面向对象模拟)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- Java程序猿的JavaScript学习笔记(5——prototype和Object内置方法)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- 图灵学院JAVA互联网架构师专题学习笔记
图灵学院JAVA互联网架构师专题学习笔记 下载链接:链接: https://pan.baidu.com/s/1xbxDzmnQudnYtMt5Ce1ONQ 密码: fbdj如果失效联系v:itit11 ...
随机推荐
- Docker问题:"docker build" requires exactly 1 argument.
今天在搭建Docker私有仓库的时候.提示错误:"docker build" requires exactly 1 argument. 原因是因为(少了一个 '.' , '.' 代 ...
- django_day03
django_day03 Django的view(视图) CBV和FBV FBV:function based view 基于函数的视图 CBV:class based view 基于类的视图 fro ...
- PostgreSQL 欺骗优化器之扩展统计信息
一.什么是扩展统计 扩展统计对象, 追踪指定表.外部表或物化视图的数据. 目前支持的种类: 启用n-distinct统计的 ndistinct. 启用功能依赖性统计的dependencies. 启用最 ...
- KingbaseES R6 单节点数据库异机恢复案例
数据库运行硬件或系统环境如果发生了不可恢复的故障,这时只能采用异机恢复的方式恢复数据库.以下通过例子介绍异机恢复的过程. 一.硬件环境 192.168.237.101 数据库运行源主机 192.168 ...
- SpringBoot使用自定义注解+AOP+Redis实现接口限流
为什么要限流 系统在设计的时候,我们会有一个系统的预估容量,长时间超过系统能承受的TPS/QPS阈值,系统有可能会被压垮,最终导致整个服务不可用.为了避免这种情况,我们就需要对接口请求进行限流. 所以 ...
- 深度剖析js闭包
一.什么是闭包? 方法里面返回一个方法 二.闭包存在的意义 延长变量的生命周期 作用域链 沟通内外部方法的桥梁 闭包会常驻内存 ==>慎用闭包 闭包里的变量不会被回收 创建私有环建 例 ...
- GreatSQL vs MySQL性能测试来了,速围观~
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. GreatSQL是MySQL的国产分支版本,使用上与MySQL一致. 1.结论先行 无论ibp(innodb_buffer ...
- [深度学习]-Dataset数据集加载
加载数据集dataloader from torch.utils.data import DataLoader form 自己写的dataset import Dataset train_set = ...
- .NET 部署Https(SSL)通过代码方式
在上一个文章中,传送门,给大家介绍了怎么在配置文件中使用 Kestrel 部署 Https,正好今天有小伙伴稳问到:可以通过代码的方式实现 Kestrel 的 Https 的部署吗?答案是肯定的,我们 ...
- Beats:运用 Logstash 来加工 Metricbeat 数据
文章转载自:https://elasticstack.blog.csdn.net/article/details/116496272