我是靠谱客的博主 认真大山,这篇文章主要介绍学习日记(集合、常用类之 ArrayList)学习日记(集合、常用类之 ArrayList),现在分享给大家,希望可以做个参考。

文章目录

  • 学习日记(集合、常用类之 ArrayList)
    • 一、概述
    • 二、ArrayList 集合
      • 1. 添加元素
      • 2. 泛型
      • 3. 常用 API、遍历
    • 三、案例
      • 1. 案例 1:遍历并删除元素值
      • 2. 案例 2:存储自定义类型的对象
      • 3. 案例 3:元素搜索
      • 4. 案例代码
    • 注意:

学习日记(集合、常用类之 ArrayList)

一、概述

集合和数组一样,是一种容器,是用来装数据的,集合和数组比较如下。

集合数组
大小(长度)不固定,动态变化固定
元素类型可以不固定确定
功能丰富(增删改查等)单一(取元素,赋值等)
使用场景数据个数不确定,且需要做增删元素的场景,如购物车等类型和长度确定的场景,如存四个季节、周一到周日等

二、ArrayList 集合

ArrayList 是集合中的一种,支持索引。

1. 添加元素

方法名说明
public boolean add(E e)将指定的元素 e 添加到此集合的末尾
public void add(int index, E element)将指定的元素 e 添加到此集合的 index 位置

注意:添加元素的两种方法相当于方法的重载;第一种方法有返回值类型,且为 boolean 型,一般都为 true。

2. 泛型

ArrayList 是一个泛型类,可以在编译阶段约束集合对象只能操作某种数据类型,是一种规范标准,如:

泛型类可操作的数据类型
ArrayList此集合只能操作字符串类型的元素
ArrayList此集合只能操作整数类型的元素

注意:集合中只能存储引用类型,不支持基本数据类型!;Integer 是整数的引用类型。

注意:JDK 1.7 开始,泛型后面的类型声明可以不写。

3. 常用 API、遍历

常用方法名称说明
public int size()个数:返回集合中元素的个数
public boolean add(E e)增:将指定的元素 e 添加到此集合的末尾
public void add(int index, E element)增:将指定的元素 e 添加到此集合的 index 位置
public E remove(int index)删:删除指定索引处的元素,返回被删除的元素
public boolean remove(Object o)删:删除指定的元素,返回删除是否成功
public E get(int index)查:返回指定索引处的元素
public E set(int index, E element)改:修改指定索引处的元素,返回被修改的元素

注意有的方法有返回值,但重点还是关注功能;用 for 循环进行元素的遍历。


三、案例

1. 案例 1:遍历并删除元素值

需求:

  • 某个班级的考试在系统上进行,成绩分别为:98,77,66,89,79,50,100;
  • 现在需要先把成绩低于 80 分以下的数据去掉。

总结:从集合中遍历元素并删除特定元素的方法:

  • 从集合前面遍历元素并删除,每删除一个元素用 i–;

  • 从集合后面遍历元素并删除,可以避免漏掉元素。

2. 案例 2:存储自定义类型的对象

需求:

  • 学校存储 3 名学生的信息,依次展示出来。

自定义学生类

创建对象,输出信息

结果

总结:集合中存储的元素并不是对象本身,而是对象的地址。

3. 案例 3:元素搜索

需求:

学号姓名年龄班级得分等级
20220901小红21通信 1 班A
20220902小强22计算机 2 班A
20220903大壮23电子信息 3 班B
20220904小张24物联网 4 班B
  • 后台存储以上学生信息并展示;
  • 提供按学号搜索学生信息的功能。

自定义学生类

实现功能

运行结果

总结:标志位的巧妙使用

4. 案例代码

package com.residue;
import java.util.ArrayList;
public class Set05 {
public static void main(String[] args) {
/*
案例一 需求:
1. 某个班级的考试在系统上进行,成绩分别为:98,77,66,89,79,50,100;
2. 现在需要先把成绩低于 80 分以下的数据去掉。
*/
ArrayList<Integer> grades = new ArrayList<>();
int[] numbers = {98, 77, 66, 89, 79, 50, 100};
//用数组给集合元素赋值
for (int i = 0; i < numbers.length; i++) {
grades.add(numbers[i]);
}
System.out.println(grades);
//[98,77,66,89,79,50,100]
//把成绩低于 80 分以下的数据去掉
//方法一:正向遍历,需要 i--
for (int i = 0; i < grades.size(); i++) {
if (grades.get(i) < 80) {
grades.remove(i);
i--;
}
}
//方法二:逆向遍历
//
for (int i = grades.size() - 1; i >= 0; i--) {
//
if (grades.get(i) < 80) {
//
grades.remove(i);
//
}
//
}
System.out.println(grades);
//[98,89,100]
}
}
package com.residue.set06;
import java.util.ArrayList;
public class Set06 {
/*
案例二 需求:学校存储 3 名学生的信息,依次展示出来。
*/
public static void main(String[] args) {
Student s1 = new Student("强", 22, 95.8, 'A');
Student s2 = new Student("红", 23, 91.5, 'B');
Student s3 = new Student("起", 21, 93.6, 'A');
ArrayList<Student> students = new ArrayList<>();
students.add(s1);
students.add(s2);
students.add(s3);
for (int i = 0; i < students.size(); i++) {
Student s = students.get(i);
System.out.println("姓名:" + s.getName());
System.out.println("年龄:" + s.getAge());
System.out.println("成绩:" + s.getScore());
System.out.println("等级:" + s.getGrade());
s.printGrade(s.getName());
System.out.println("===================================");
}
}
}
package com.residue.set08;
import java.util.ArrayList;
import java.util.Scanner;
public class Application {
public static void main(String[] args) {
/*
案例三 需求:
1. 后台存储学生信息并展示;
2. 提供按学号搜索信息的功能。
*/
//存储学生信息
Student s1 = new Student(20220901, "小红", 21, "通信 1 班", 'A');
Student s2 = new Student(20220902, "小强", 22, "计算机 2 班", 'A');
Student s3 = new Student(20220903, "大壮", 23, "电子信息 3 班", 'B');
Student s4 = new Student(20220904, "小张", 24, "物联网 4 班", 'B');
ArrayList<Student> students = new ArrayList<>();
students.add(s1);
students.add(s2);
students.add(s3);
students.add(s4);
//展示学生信息
new Application().printMessage(students);
//按学号搜索信息
System.out.print("请输入所要查找学生信息的学号:");
Scanner scanner = new Scanner(System.in);
new Application().searchMessage(scanner, students);
scanner.close();
}
//展示学生信息的功能方法
public void printMessage(ArrayList<Student> students) {
for (int i = 0; i < students.size(); i++) {
System.out.println("学号:" + students.get(i).getId());
System.out.println("姓名:" + students.get(i).getName());
System.out.println("年龄:" + students.get(i).getAge());
System.out.println("班级:" + students.get(i).getClassroom());
System.out.println("等级:" + students.get(i).getGrade());
System.out.println("============================================");
}
}
//按学号搜索信息的功能方法
public void searchMessage(Scanner scanner, ArrayList<Student> students) {
int flag1 = 0;
while (scanner.hasNextInt()) {
flag1 = 1;
int num = scanner.nextInt();
int flag2 = 0;
for (int i = 0; i < students.size(); i++) {
if (students.get(i).getId() == num) {
flag2 = 1;
System.out.println("学号为 " + num + " 的同学为:" + students.get(i).getName());
System.out.println("他(她) " + students.get(i).getAge() + " 岁,在" + students.get(i).getClassroom());
System.out.println("等级为 " + students.get(i).getGrade());
flag1 = -1;
break;
}
}
if (flag2 == 0) {
System.out.print("没有该学生信息,请重新输入学号:");
} else {
break;
}
}
if (flag1 != -1) {
System.out.println("您的输入不符合学号的格式!");
System.exit(0);
}
}
}

注意:

  1. 可以在 API 文档中查找所用到的功能。

  1. 不是所有类都支持泛型,只有类支持才可以用泛型,ArrayList 类支持。

  1. 如果一个集合中有两个及以上相同的元素,当删除该元素时,会删除靠前的元素。

  1. 如果输出转义字符 t,最好用双引号,如 "t",若用单引号,则与 int 类型相加时,会被当为 char 类型从而转化为 int 类型相加。
  2. 在任何地方存引用类型的变量,都是存的变量的地址
  3. 学会标志位的巧妙使用。

最后

以上就是认真大山最近收集整理的关于学习日记(集合、常用类之 ArrayList)学习日记(集合、常用类之 ArrayList)的全部内容,更多相关学习日记(集合、常用类之内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部