前言
博客仅记录个人学习进度和一些查缺补漏。
学习内容: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一样,可以用来实现各种数据结构。其本质原因在于可以自由的控制容量,这是栈和队列非常需要的一个能力。
比较简单的概念,非常使用。