Java-Grundlagen-ArrayList

1. Sammlungsübersicht

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

2. Schnellstart mit der ArrayList Collection

ArrayList集合的对象获取:
	public ArrayList( )    创建一个空的集合对象
ArrayList集合添加元素的方法:
	public boolean add( E e)   将指定的元素追加到此集合的末尾
	public void add(int index , E element)  在此集合中的指定位置插入指定的元素
import java.util.ArrayList;

public class List {
    
    
    //需求: 创建ArrayList对象,代表集合容器,往里面添加元素
    public static void main(String[] args) {
    
    
        //1.创建ArrayList集合的对象
        ArrayList list = new ArrayList();

        //2. 添加数据
        list.add("Java");
        list.add("Java");
        list.add("MySQL");
        list.add(12);
        list.add(12.3);
        list.add('a');
        System.out.println(list.add('中'));
        System.out.println(list);

        //3.给指定索引位置插入元素
        list.add(1,"你好中国");
        System.out.println(list);



    }
}
输出结果:
true
[Java, Java, MySQL, 12, 12.3, a,]
[Java, 你好中国, Java, MySQL, 12, 12.3, a,]

Zusammenfassung:
1. Wie erstellt die ArrayList-Klasse ein Sammlungsobjekt und wie fügt man Elemente hinzu?
ArrayList list = new ArrayList();
public boolean add(E e)
public void add(int index, E element)

3.ArrayList-Unterstützung für Generika

泛型概述:
			ArrayList<E>:其实就是一个泛型,可以在编译阶段约束集合对象只能操作某种数据类型.
		举个例子:
			ArrayList<String>:此集合只能操作字符串类型的元素,
			ArrayList<Integer>:此集合只能操作整数类型的元素
注意:集合中只能存储引用类型,不支持基本数据类型.
import java.util.ArrayList;

public class List1 {
    
    
    /*
    目标: 能够使用泛型约束ArrayList集合操作的数据类型
    * */
    public static void main(String[] args) {
    
    
        //首先定义一个整数型集合
        ArrayList<Integer> list = new ArrayList<>();
        // 注意这个list集合中,只能添加int类型的数据,否则就会报错
         list.add(12);
         list.add(100);

        // 然后我们在定义一个String类型的集合,注意这里只能添加String类型的数据
        ArrayList<String> list1 = new ArrayList<>();
        list1.add("你好");
        list1.add("中国");

        System.out.println(list);
        System.out.println(list1);
    }
}
输出结果:
[12, 100]
[你好, 中国]

Zusammenfassung:
1. Wie vereinheitlicht man die Elementtypen von ArrayList-Sammlungsoperationen?
Verwenden Sie Generika: <Datentyp>
ArrayList list1 = new ArrayList();

4. Gemeinsame API und Durchquerung von ArrayList

Fügen Sie hier eine Bildbeschreibung ein

import java.util.ArrayList;

public class List3 {
    
    
    public static void main(String[] args) {
    
    
        //定义一个集合,然后依次运用下面这些API
        ArrayList<Integer> list = new ArrayList<>();
        list.add(12);
        list.add(256);
        list.add(144);
        list.add(11);
        list.add(16);
        System.out.println(list);
        // 1.public E get(int index) 返回指定索引处的元素
        int a = list.get(1);
        System.out.println(a);
        // 2.public int size() 返回集合中的元素的个数
        System.out.println(list.size());
        // 3.public E remove(int index) 删除指定索引处的元素,返回被删除的元素
        int c = list.remove(2);
        System.out.println(c);
        System.out.println(list);
        //4.public boolean remove(Object o) 删除指定的元素,返回删除是否成功  注意因为我们删除的是集合中的 Integer型不是int型,所以要加Integer
        System.out.println(list.remove((Integer) 256));
        System.out.println(list);
        System.out.println(list.remove((Integer) 11));
        System.out.println(list);
        // 5.public E set(int index, E element) 修改指定索引处的元素,返回被修改的元素
        int e = list.set(0,15);
        System.out.println(e);
    }
}
输出结果:
[12, 256, 144, 11, 16]
256
5
144
[12, 256, 11, 16]
true
[12, 11, 16]
true
[12, 16]

5.ArrayList-Sammlungsfall: Elemente durchlaufen und löschen

需求:
	某个班级的考试在系统 上进行,成绩大致为:98,77,66,89,79,50,100,
	现在需要先把成绩低于80分一下的数据去掉
分析:
	定义ArrayList集合存储多名学员的成绩.
	遍历集合每个元素,如果元素值低于80分,去掉它
import java.util.ArrayList;

public class List4 {
    
    
    public static void main(String[] args) {
    
    
        //定义一个集合将所有的成绩都录入进去
        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分,去掉它
        for (int i = scores.size() - 1; i >= 0 ; i--) {
    
    
            int score = scores.get(i);
            // 判断这个分数是否低于80分,如果低于就从集合中删掉它
            if (score < 80){
    
    
                scores.remove(i);
            }
            
        }
        System.out.println(scores);
    }
}
输出结果:
[98, 77, 66, 89, 79, 50, 100]
[98, 89, 100]

Hinweis:
1. Durchlaufen Sie die Elemente aus der Sammlung und filtern Sie die Elemente heraus, um sie zu löschen. Wie sollen wir dieses Problem lösen? Durch
Durchqueren von der Rückseite der Sammlung und anschließendes Löschen können fehlende Elemente vermieden werden.
2. Achten Sie auf i=-Scores -1, damit wir mit dem letzten beginnen können. gestartet

6. ArrayList-Sammlungsfall: Speichern benutzerdefinierter Typen

需求:
		某影院系统需要在后台存储上述三部电影,然后依次展示出来
分析:
		1.三部电影是3个对象,定义一个电影类,定义一个集合存储电影类
		2.创建3个电影对象,封装相关数据,把3个对象存入到集合中.

Zuerst definieren wir die Klasse:

public class Movie {
    
    
    private String name;
    private double score;
    private String 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;
    }

    public Movie(String name, double score, String actor) {
    
    
        this.name = name;
        this.score = score;
        this.actor = actor;
    }

    public Movie() {
    
    
    }
}

Dann definieren wir die Sammlung und fügen den Film hinzu

import java.util.ArrayList;

public class List5 {
    
    
    public static void main(String[] args) {
    
    
        // 1.定义一个电影类:Movie
        // 2.定义一个ArrayList集合存储这些影片对象
        ArrayList<Movie> movies = new ArrayList<>();

        // 3.创建影片对象封装电影数据,把对象加入到集合中去.
        movies.add(new Movie("十二生肖",9.7,"成龙"));
        movies.add(new Movie("除暴",8.5,"吴彦祖"));
        movies.add(new Movie("人民的名义",9.9,"侯亮平"));
        System.out.println(movies); //这里打印出来的只是存储在堆内存的地址

        // 所以我们需要遍历集合然后将集合中的数据打印出来
        for (int i = 0; i < movies.size(); i++) {
    
    
            Movie movie = movies.get(i);
            System.out.println("片名: " + movie.getName());
            System.out.println("评分: " + movie.getScore());
            System.out.println("评分: " + movie.getActor());
        }
    }
}
输出结果:
[com.Array.Movie@49e4cb85, com.Array.Movie@2133c8f8, com.Array.Movie@43a25848]
片名: 十二生肖
评分: 9.7
评分: 成龙
片名: 除暴
评分: 8.5
评分: 吴彦祖
片名: 人民的名义
评分: 9.9
评分: 侯亮平

Hinweis:
Die in der Sammlung gespeicherten Elemente sind nicht die Objekte selbst, sondern die Adressen der Objekte.

7.ArrayList-Sammlungsfall: Elementsuche

需求:
	 1.后台程序需要存储如上学生信息并展示,然后要提供按照学号搜索学生信息的功能
分析:
     1.定义Student类,定义ArrayList集合存储如上学生对象信息,并遍历展示出来.
     2.提供一个方法,可以接受ArrayList集合,和要搜索的学号,返回搜索到的学生对象信息,并展示
     3.使用死循环,让用户可以不停的搜索.

Definieren wir also zunächst eine Studentenklasse:


public class Student {
    
    
    private String studyid;
    private String name;
    private int age;
    private String className;

    public Student() {
    
    
    }

    public Student(String studyid, String name, int age, String className) {
    
    
        this.studyid = studyid;
        this.name = name;
        this.age = age;
        this.className = className;
    }

    public String getStudyid() {
    
    
        return studyid;
    }

    public void setStudyid(String studyid) {
    
    
        this.studyid = studyid;
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public int getAge() {
    
    
        return age;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }

    public String getClassName() {
    
    
        return className;
    }

    public void setClassName(String className) {
    
    
        this.className = className;
    }
}

Dann definieren wir eine Sammlung, um deren Daten anzuzeigen

import java.util.ArrayList;
import java.util.Scanner;

public class List6 {
    
    
    public static void main(String[] args) {
    
    
        ArrayList<Student> students = new ArrayList<>();
        //1.定义一个学生类,后期用于创建对象封装学生数据
        //2.定义一个集合对象用于装学生对象
        students.add(new Student("201801302", "大师兄", 23, "护理一班"));
        students.add(new Student("202001111", "沙师兄", 56, "信息一班"));
        students.add(new Student("201001002", "八师兄", 18, "科学一班"));
        students.add(new Student("201201102", "吴彦祖", 19, "体育一班"));
        System.out.println("学号\t\t名称\t年龄\t\t班级");

        // 3.遍历集合中的每个对象并展示其数据
        for (int i = 0; i < students.size(); i++) {
    
    
            Student s = students.get(i);
            System.out.println(s.getStudyid() + "\t\t" + s.getClassName() + "\t" + s.getAge() + "\t" + s.getClassName());
        }
            //4.让用户不断的输入学号,可以不断搜索该学生对象信息并展示出来(独立成方法)
            Scanner sc = new Scanner(System.in);
            while (true) {
    
    
                System.out.println("请你输入你要查询的学生的学号:");
                String id = sc.next();
                Student s = getStudentByStudyId(students, id);
                // 判断学号是否存在
                if (s == null) {
    
    
                    System.out.println("查不到此人");
                } else {
    
    
                    //找到了该学生 信息如下
                    System.out.println(s.getStudyid() + "\t\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getClassName());

                }
            }


    }

        public static Student getStudentByStudyId (ArrayList < Student > students, String studyid){
    
    
            //根据学号,去集合中找出学生对象并返回
            for (int i = 0; i < students.size(); i++) {
    
    
                Student s = students.get(i);
                if (s.getStudyid().equals(studyid)) {
    
    
                    return s;
                }
            }
            return null;
        }
    }

输出结果:
学号		名称	年龄		班级
201801302		护理一班	23	护理一班
202001111		信息一班	56	信息一班
201001002		科学一班	18	科学一班
201201102		体育一班	19	体育一班
请你输入你要查询的学生的学号:
202001111
202001111		沙师兄	56	信息一班
请你输入你要查询的学生的学号:
201201102
201201102		吴彦祖	19	体育一班
请你输入你要查询的学生的学号:
201001002
201001002		八师兄	18	科学一班
请你输入你要查询的学生的学号:

Komm schon…!!!

Supongo que te gusta

Origin blog.csdn.net/tyloonulinuli/article/details/121747444
Recomendado
Clasificación