Java学习_7_ArrayList集合


前言

博客仅记录个人学习进度和一些查缺补漏。
学习内容:BV17F411T7Ao


一、集合

在这里插入图片描述
数组的极限在于已经固定了长度上限,且是连续存储。
一个可以变化的容器是非常需要的。
但是不能直接用来存基本数据类型。
在这里插入图片描述
在这里插入图片描述
一半来说集合会被用于数据结构的实现。

二、ArrayList

ArrayList其中E为泛型,此处特指存储数据类型为指针(引用数据类型)。
在这里插入图片描述
为int是会报错,不能存基础数据类型。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
arraylist可以直接被打印,其内容为[]加上集合内元素。
arraylist<int[]>打印则为地址值。

三、练习:遍历集合

在这里插入图片描述
代码如下:

    public static void main(String[] args) {

        ArrayList<String> arr = new ArrayList<>();

        arr.add("abc");
        arr.add("bcd");
        arr.add("cde");

        System.out.printf("[");
        for(int i = 0; i < arr.size() - 1; i++) {
            System.out.print(arr.get(i) + ',');
        }
        System.out.println(arr.get(arr.size() - 1) + "]");
    }

在这里插入图片描述
代码如下:
需要使用包装类。

    public static void main(String[] args) {

        ArrayList<Integer> arr = new ArrayList<>();

        arr.add(1);
        arr.add(2);
        arr.add(3);

        System.out.printf("[");
        for(int i = 0; i < arr.size() - 1; i++) {
            System.out.print(arr.get(i) + ",");
        }
        System.out.println(arr.get(arr.size() - 1) + "]");
    }

在这里插入图片描述

public class Student {
    private int studentId;
    private String studentName;
    private int studentAge;
    private boolean logicDelete;

    public Student() {
        this.studentId = 0;
        this.studentName = "default";
        this.studentAge = 0;
        logicDelete = true;
    }

    public Student(int studentId, String studentName, int studentAge) {
        this.studentId = studentId;
        this.studentName = studentName;
        this.studentAge = studentAge;
        logicDelete = false;
    }

    public String printStudent() {
        return "(学号:" + this.studentId + " 姓名:" + this.studentName + " 年龄:" + this.studentAge + ")";
    }

    public boolean isLogicDelete() {
        return logicDelete;
    }

    public void setLogicDelete(boolean logicDelete) {
        this.logicDelete = logicDelete;
    }

    public int getStudentId() {
        return studentId;
    }

    public void setStudentId(int studentId) {
        this.studentId = studentId;
    }

    public String getStudentName() {
        return studentName;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    public int getStudentAge() {
        return studentAge;
    }

    public void setStudentAge(int studentAge) {
        this.studentAge = studentAge;
    }
}
    public static void main(String[] args) {

        ArrayList<Student> arr = new ArrayList<>();

        Scanner sc = new Scanner(System.in);

        arr.add(new Student(sc.nextInt(), sc.next(), sc.nextInt()));
        arr.add(new Student(sc.nextInt(), sc.next(), sc.nextInt()));
        arr.add(new Student(sc.nextInt(), sc.next(), sc.nextInt()));

        System.out.printf("[");
        for(int i = 0; i < arr.size() - 1; i++) {
            System.out.print(arr.get(i).printStudent() + ",");
        }
        System.out.println(arr.get(arr.size() - 1).printStudent() + "]");

    }
D:\JDK\bin\java.exe "-javaagent:D:\IntelliJ IDEA 2021.2.1\lib\idea_rt.jar=8261:D:\IntelliJ IDEA 2021.2.1\bin" -Dfile.encoding=UTF-8 -classpath D:\java_test_code\basic_code\out\production\day02_code com.itheima.demo2.PracticeTest
1 xiaoming 15
2 xiaohong 15
3 xiaogang 16
[(学号:1 姓名:xiaoming 年龄:15),(学号:2 姓名:xiaohong 年龄:15),(学号:3 姓名:xiaogang 年龄:16)]

在这里插入图片描述
代码如下:

package com.itheima.demo2;

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

public class PracticeTest {
    public static void main(String[] args) {

        ArrayList<User> arr = new ArrayList<>();

        Scanner sc = new Scanner(System.in);

        arr.add(new User(sc.nextInt(), sc.next(), sc.next()));
        arr.add(new User(sc.nextInt(), sc.next(), sc.next()));
        arr.add(new User(sc.nextInt(), sc.next(), sc.next()));

        int userId = sc.nextInt();

        System.out.println(findUser(arr, userId));

    }

    public static boolean findUser(ArrayList<User> users, int id) {
        for(User i : users) {
            if(i.getUserId() == id) {
                return true;
            }
        }
        return false;
    }


}

package com.itheima.demo2;

public class User {
    private int userId;
    private String userName;
    private String passWord;

    public User() {
        this.userId = 0;
        this.userName = "default";
        this.passWord = "123456";
    }

    public User(int userId, String userName, String passWord) {
        this.userId = userId;
        this.userName = userName;
        this.passWord = passWord;
    }

    public int getUserId() {
        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }
}

D:\JDK\bin\java.exe "-javaagent:D:\IntelliJ IDEA 2021.2.1\lib\idea_rt.jar=9069:D:\IntelliJ IDEA 2021.2.1\bin" -Dfile.encoding=UTF-8 -classpath D:\java_test_code\basic_code\out\production\day02_code com.itheima.demo2.PracticeTest
1 xiaoming 123
2 xiaohong 123
3 xiaogang 123
2
true

D:\JDK\bin\java.exe "-javaagent:D:\IntelliJ IDEA 2021.2.1\lib\idea_rt.jar=9109:D:\IntelliJ IDEA 2021.2.1\bin" -Dfile.encoding=UTF-8 -classpath D:\java_test_code\basic_code\out\production\day02_code com.itheima.demo2.PracticeTest
1 xiaoming 123
2 xiaohong 123
3 xiaogang 123
4
false

总结

集合感觉就像C++里的vector一样,可以用来实现各种数据结构。其本质原因在于可以自由的控制容量,这是栈和队列非常需要的一个能力。
比较简单的概念,非常使用。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值