集合基础知识点:
提示:只想看应用可以忽略以上内容。
问题描述:
案例:创建学生类Student类,学生类里有姓名和年龄,并用private修饰。如何把学生信息存放进集合中?并遍历集合获取集合内容。(遍历要求,如图:)
提示:ArrayList实现了长度可变的数组(严格说集合并不是数组,但是刚学的小白可以暂时把集合当成数组来理解),在内存中分配连续的空间。
代码如下:
Student类
public class Student {
private String name; //学生姓名
private int age; //学生年龄
public Student() { //无参构造
//super(); 可写可不写,不写系统也会默认替你写
}
public Student(String name, int age) { //有参构造
super(); //调用父类,这里暂时无视就好,知道有这东西就行
this.name = name;
//因为形参和成员变量名字一样,为了区分所以用this.来确认成成员变量
this.age = age;
}
public String getName() { //获取成员变量姓名
return name; //如果有重名,name可以改为this.name;
}
public int getAge() { //获取成员变量年龄
return age;
}
@Override
public String toString() {
//重写toString方法,返回自己需要的格式。
return "名字:"+name+ "\t" + "年龄:" + age;
}
}
测试类
Test类
//注意导包,是util的,别导入错了。
import java.util.ArrayList;
import java.util.Iterator;
public class test {
public static void main(String[] args) {
/*
下面<Student>就是泛型,特点:<XXX>,泛型的本质是参数化类型,
也就是说所操作的数据类型被指定为一个参数。
如果实在理解不了就把他当作一种类型像String,int 什么的。
*/
ArrayList<Student> list = new ArrayList<>(); //
list.add(new Student("张三",23));
//看不懂可以简单理解成把Student类对象封装起来存入集合。
list.add(new Student("李四",24));
//再通俗一点就是把学校叫李四,24岁的家伙丢进集合里面
list.add(new Student("王五",25));
//foreach增强for循环遍历
for (Student s : list) {
/*上面那行简单理解就是把list赋值给Student类型的s里;
(上面那s是我取的名字想叫什么都可以,但不要中文就行);
*/
System.out.println(s); //遍历集合的全部内容
System.out.println(s.getName()); //单独获取名字
System.out.println(s.getAge()); //单独获取年龄
}
Iterator<Student> it = list.iterator(); //<泛型> 讲义P254 迭代器Iterator
//it.hasNext()这行是循环判断语句,如果有就执行,没有就跳出。
while (it.hasNext()) {
Student stu = it.next();
System.out.println("遍历stu:"+stu); //遍历stu
System.out.println("单独遍历名字:"+stu.getName()); //单获取历名字
System.out.println("单独遍历年龄:"+stu.getAge()); //单独获取年龄
}
}
}