提示用戶輸入5名同學的學號和成績,創建Student物件,然后放到ArrayList集
合中,并完成下面操作:
1)遍歷集合,洗掉學號為2的同學
2)不遍歷集合,洗掉學號為3的同學(按元素值刪)
3)不遍歷集合,判斷集合中是否包好學號為3的同學
uj5u.com熱心網友回復:
解決方案:注意通過list集合本身移除元素時,防止個別元素落網,此處存在坑(原因:list移除集合元素之后,后邊的元素坐標會依次向前移動一位,此時回圈變數仍然會+1,落掉移除元素之后的一個元素),可通過迭代器移除的方式、forEach的方式、或是采用倒序的方式
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.function.Predicate;
/**
* @ClassName: Student
* @Description: TODO
* @author: mzb
* @date: 2020年3月19日 上午9:26:51
*/
public class Student {
private Integer stuNo;
private Integer stuScore;
public Integer getStuNo() {
return stuNo;
}
public void setStuNo(Integer stuNo) {
this.stuNo = stuNo;
}
public Integer getStuScore() {
return stuScore;
}
public void setStuScore(Integer stuScore) {
this.stuScore = stuScore;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((stuNo == null) ? 0 : stuNo.hashCode());
result = prime * result + ((stuScore == null) ? 0 : stuScore.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (stuNo == null) {
if (other.stuNo != null)
return false;
} else if (!stuNo.equals(other.stuNo))
return false;
if (stuScore == null) {
if (other.stuScore != null)
return false;
} else if (!stuScore.equals(other.stuScore))
return false;
return true;
}
@Override
public String toString() {
return "Student [stuNo=" + stuNo + ", stuScore=" + stuScore + "]";
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
List<Student> list = new ArrayList<>();
//集合賦初值
for(int i=0; i<3; i++) {
System.out.print("please input stuNo:");
int stuNo = scan.nextInt();
System.out.print("please input stuScore:");
int stuScore = scan.nextInt();
Student stu = new Student();
stu.setStuNo(stuNo);
stu.setStuScore(stuScore);
list.add(stu);
}
System.out.println();
System.out.println("0:"+list);
//1 遍歷集合,洗掉學號為2的同學
for(int i=list.size()-1; i>=0; i--) {
Student stu = list.get(i);
if(2 == stu.getStuNo()) {
list.remove(i);
}
}
System.out.println("1:"+list);
//2 不遍歷集合,洗掉學號為3的同學
list.removeIf(new Predicate<Student>() {
@Override
public boolean test(Student stu) {
// TODO Auto-generated method stub
return stu.getStuNo() == 3;
}
});
System.out.println("2:"+list);
//3 不遍歷集合,判斷集合中是否包含學號為1的同學
boolean flag = false;
for(Student stu3 : list) {
if(1 == stu3.getStuNo() ) {
flag = true;
}
}
System.out.println("3:"+list+":"+flag);
}
}
第三個問題:不通過遍歷集合,判斷集合中是否包含學號為3的學生,實作的話,不太方便。
uj5u.com熱心網友回復:
蟹蟹蟹蟹!太感謝了??
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/113206.html
標籤:Eclipse
上一篇:加載properties檔案的資料到Properties集合中使用了字符流,為什么還出現中文亂碼?請求大神解答,謝謝。
下一篇:java
