我是靠谱客的博主 认真大山,最近开发中收集的这篇文章主要介绍学习日记(集合、常用类之 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)的全部内容,希望文章能够帮你解决学习日记(集合、常用类之 ArrayList)学习日记(集合、常用类之 ArrayList)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部