ArrayList
作者:互联网
ArrayList集合
ArrayList与数组的区别:
1. 数组和ArrayList的本质区别在于前者是类型安全的,而后者是类型不安全的.
2. ArrayList为了兼容所有类型对象,使用了Object数组,在使用元素的时候会有装箱和拆箱的操作,降低了程序的性能.
3. ArrayList会动态扩充容量,容量为原来的2倍.
4. ArrayList只有把元素添加进去之后才可以通过下标访问相应的元素.
5. 数组在创建的时候就已经确定了数据类型,并且它的长度是固定的,只能通过下标改变各个元素的值和访问.
如果已经知道数据的长度并且不需要频繁的做插入和删除操作,建议使用数组,反之亦然.
ArrayList泛型
ArrayList<数据类型/类名> 集合名 = new ArrayList<>();
<>尖括号里的是泛型String Integer Character Boolean等引用数据类型
如果不写泛型,那么集合里什么元素都能存储,list.add(1); list.add(“abc”);
都可以存储,这样是不安全。
例如:加上
案例一:
目标:学习遍历并删除元素的正确方案
需求
- 某个班级的考试在系统上进行,成绩大致为 0 ~ 100之间
- 现在需要先把成绩低于80分的数据去掉
分析:
- 1.定义ArrayList集合存储多名学员的成绩。
- 2.遍历集合每个元素,如果元素低于80分,去掉它。
案例一 代码:
public static void arrayListSeeAndDelete() {
//目标;学习遍历并删除原数的正确方案
// 1.创建一个ArrayList集合存储一个班级学生的成绩
ArrayList<Integer> scores = new ArrayList<>();
scores.add(98);
scores.add(77);
scores.add(66);
scores.add(89);
scores.add(79);
scores.add(50);
scores.add(100);
System.out.println(scores);
/*
方法一:
*/
// 2.把低于80分的成绩从集合中去掉
// scores = [98, 77, 66, 89, 79, 50, 100]
// scores = [98, 77, 66, 89, 79, 50, 100]
/* for (int i = 0; i < scores.size(); i++) {
int score = scores.get(i);
if (score < 80) {
scores.remove(i);
i--; //删除成功后,必须退一步才能保证后面不满足条件的元素不被跳过
}
}
System.out.println(scores);*/
/*
方法二:
倒着遍历再删除
*/
for (int i = scores.size() - 1; i >= 0; i--) {
int score = scores.get(i);
if (score < 80) {
scores.remove(i); // 可以避免跳过删除
}
}
}
案例二:
目标:理解ArrayList集合存储自定义类型的对象,并且对集合中对象进行遍历
需求
- 定义电影类
- 创建三个电影对象
- 创建一个电影类型的ArrayList集合存储三部电影对象
- 遍历电影类型中的每个电影对象,访问其信息并输出
案例二 代码Part Ⅰ:
电影类及其构造方法get/set方法。
public class ArrayListMovieShow {
//目标:理解ArrayList集合存储自定义类型的对象
// 1.定义电影类。 ArrayListMovieShow
private String name;
private double score;
private String actor;
public ArrayListMovieShow(String name, double score, String actor) {
this.name = name;
this.score = score;
this.actor = actor;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public String getActor() {
return actor;
}
public void setActor(String actor) {
this.actor = actor;
}
}
案例二 代码Part Ⅱ:
主函数部分:
public static void main(String[] args) {
// 2.创建三个电影类
ArrayListMovieShow m1 = new ArrayListMovieShow("《肖申克的救赎》", 9.8, "罗宾斯");
ArrayListMovieShow m2 = new ArrayListMovieShow("《霸王别姬》", 9.7, "张国荣、张丰毅");
ArrayListMovieShow m3 = new ArrayListMovieShow("《阿甘正传》", 9.6, "汤姆·汉克斯");
// 3.创建一个电影类型的ArrayList集合,存储三个电影对象
ArrayList<ArrayListMovieShow> movies = new ArrayList<>();
movies.add(m1);
movies.add(m2);
movies.add(m3);
System.out.println(movies); //输出三个电影对象的地址
// 4.遍历电影类型的集合中的每个电影对象。访问他的信息即可
for (int i = 0; i < movies.size(); i++) {
ArrayListMovieShow m = movies.get(i);
System.out.println("电影名:" + m.getName());
System.out.println("电影得分:" + m.getScore());
System.out.println("电影主演:" + m.getActor());
System.out.println("--------------------------------");
}
}
输出结果
[javaBase.practice.ArrayListMovieShow@1b6d3586, javaBase.practice.ArrayListMovieShow@4554617c, javaBase.practice.ArrayListMovieShow@74a14482]
电影名:《肖申克的救赎》
电影得分:9.8
电影主演:罗宾斯
--------------------------------
电影名:《霸王别姬》
电影得分:9.7
电影主演:张国荣、张丰毅
--------------------------------
电影名:《阿甘正传》
电影得分:9.6
电影主演:汤姆·汉克斯
--------------------------------
案例来自B站黑马,如有错误请多多交流。
标签:ArrayListMovieShow,ArrayList,电影,add,score,scores 来源: https://www.cnblogs.com/zhangyouren/p/16412012.html