ArrayList 遍历方式
1. 下标遍历
for(int i = 0;i < Mylist.size(); i++){
System.out.println(Mylist.get(i));
}
2. 增强for循环
for (Hero it : Mylist) { //Hero是Mylist中存储的元素类型,此为Hero类
System.out.println(it);
}
3. 迭代器遍历
Iterator<Hero> iterator = Mylist.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
或
for(Iterator it2 = Mylist.iterator();it2.hasNext();){
System.out.println(it2.next());
}
4. forEach方法遍历输出(JDK 8)
在JDK1.8之后的forEach可以直接遍历集合
//使用System.out中的println方法
Mylist.forEach(System.out :: println);
//使用Lambda表达式
Mylist.forEach(obj -> System.out.println(obj))
//使用方法引用,引用本类中的 print(Object object)方法(要先在类中创建print方法)
Mylist.forEach(ListDemo::print);
练习题目
自己选择数据结构,实现三国人物的信息管理,要求:
1、定义Hero类,属性有姓名、学号、出生日期、国别、成绩、删除状态等;
2、添加魏、蜀、吴三国人物的对象信息,统计东吴的人员数量;
3、查询对应姓名的三国人物,输出查到、未查到的结果;
4、输入某个人物的姓名,将改人物的出生日期改为2023年10月11日;
5、输入某个人物的姓名,若存在,将其删除。(逻辑删除,输出时不再显示)
具体思路
-
定义Hero类,属性有姓名、学号、出生日期、国别、成绩、删除状态等
利用ArrayList创建人物列表,存Hero类,在类中实现构造、读取某个属性、修改某个属性等操作。
-
添加魏、蜀、吴三国人物的对象信息,统计东吴的人员数量;
用ArrayList的add()方法添加,循环遍历列表(ArrayList的循环遍历可以看一下这个文章)查找东吴人员数量。
-
查询对应姓名的三国人物,输出查到、未查到的结果
循环遍历列表,找到输出“存在”,未找到输出”不存在“。
-
输入某个人物的姓名,将改人物的出生日期改为2023年10月11日
循环遍历列表,找到输入的姓名,修改出生日期。
-
输入某个人物的姓名,若存在,将其删除。(逻辑删除,输出时不再显示)
循环遍历列表,找到输入的姓名,将delete属性修改为true,在循环遍历时只输出delete属性为false的即可。
代码
Main
package mytext;
import java.util.*;
public class Main {
/*
自己选择数据结构,实现三国人物的信息管理,要求:
1、定义Hero类,属性有姓名、学号、出生日期、国别、成绩、删除状态等;
2、添加魏、蜀、吴三国人物的对象信息,统计东吴的人员数量;
3、查询对应姓名的三国人物,输出查到、未查到的结果;
4、输入某个人物的姓名,将改人物的出生日期改为2023年10月11日;
5、输入某个人物的姓名,若存在,将其删除。(逻辑删除,输出时不再显示)
*/
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//利用ArrayList创建人物列表
ArrayList<Hero> Mylist = new ArrayList<Hero>();
System.out.println("==========================================");
//添加魏、蜀、吴三国人物的对象信息到Mylist
Hero h1 = new Hero("caocao", "1001", "0155-07-18","wei", 98);
Mylist.add(h1);
Hero h2 = new Hero("liubei", "1002", "0161-01-01","shu", 96);
Mylist.add(h2);
Hero h3 = new Hero("sunquan", "1003", "0182-01-01","wu", 94);
Mylist.add(h3);
System.out.println("==========================================");
//统计东吴的人员数量
int cnt = 0;
for (int i = 0; i < Mylist.size(); i++) {
if(Mylist.get(i).getCountry().equals("wu"))
cnt ++;
}
System.out.println("country is \"wu\" number:" + cnt);
System.out.println("==========================================");
//查询对应姓名的三国人物,输出查到、未查到的结果
System.out.println("请输入要查询的姓名:");
String name1 = scan.next();
for (int i = 0; i < Mylist.size(); i++) {
if(Mylist.get(i).getName().equals(name1)) {
System.out.println(name1 + "存在");
break;
}
if(i == Mylist.size() - 1) {
System.out.println(name1 + "不存在!");
}
}
System.out.println("==========================================");
//输入某个人物的姓名,将改人物的出生日期改为2023年10月11日
System.out.println("请输入要修改生日的人的姓名:");
String name2 = scan.next();
for (int i = 0; i < Mylist.size(); i++) {
if(Mylist.get(i).getName().equals(name2)) {
Mylist.get(i).setBth("2023-10-11");
System.out.println(name2 + "生日修改成功!");
break;
}
if(i == Mylist.size() - 1) {
System.out.println(name2 + "不存在!");
}
}
System.out.println("==========================================");
//输入某个人物的姓名,若存在,将其删除。(逻辑删除,输出时不再显示)
//遍历Mylist中的所有成员,被删除的不输出
System.out.println("删除前所有成员如下:");
for(int i = 0; i < Mylist.size(); i++){
if(Mylist.get(i).isDelete() == false)
System.out.println(Mylist.get(i));
}
//删除
System.out.println("请输入要删除的姓名:");
String name3 = scan.next();
for (int i = 0; i < Mylist.size(); i++) {
if(Mylist.get(i).getName().equals(name3)) {
Mylist.get(i).setDelete(true);
System.out.println(name3 + "删除成功!");
break;
}
if(i == Mylist.size() - 1) {
System.out.println(name3 + "不存在!");
}
}
//删除后遍历
System.out.println("删除后所有成员如下:");
for(int i = 0; i < Mylist.size(); i++){
if(Mylist.get(i).isDelete() == false)
System.out.println(Mylist.get(i));
}
System.out.println("==========================================");
}
}
Hero类
package mytext;
public class Hero {
//属性有姓名、学号、出生日期、国别、成绩、删除状态等
private String name;
private String ID;
private String bth;
private String country;
private int score;
private boolean delete;
public Hero (String name, String ID, String bth, String country, int score) {
this.name = name;
this.ID = ID;
this.bth = bth;
this.country = country;
this.score = score;
delete = false;
}
public Hero (String name, String ID, String bth, String country, int score, boolean delete) {
super();
this.name = name;
this.ID = ID;
this.bth = bth;
this.country = country;
this.score = score;
this.delete = delete;
}
@Override
public String toString () {
return "Hero{" +
"name='" + name + '\'' +
", ID='" + ID + '\'' +
", bth='" + bth + '\'' +
", country='" + country + '\'' +
", score=" + score +
", delete=" + delete +
'}';
}
public String getName () {
return name;
}
public String getID () {
return ID;
}
public String getBth () {
return bth;
}
public String getCountry () {
return country;
}
public int getScore () {
return score;
}
public boolean isDelete () {
return delete;
}
public void setName (String name) {
this.name = name;
}
public void setID (String ID) {
this.ID = ID;
}
public void setBth (String bth) {
this.bth = bth;
}
public void setCountry (String country) {
this.country = country;
}
public void setScore (int score) {
this.score = score;
}
public void setDelete (boolean delete) {
this.delete = delete;
}
}