我做了一個學生陣列串列,其中有姓名、年齡和數字變數。我手動輸入了3個學生。我想檢查一個名字是否已經存在于我的串列中。我試著使用list.contains,但它似乎不起作用。對于這種ArrayList,有什么方法可以做到嗎?
public class CompareToeX {
public static void main(String[] args){
ArrayList<Student> obj=new ArrayList<Student>()。
obj.add(new Student("Peter", 27,1) 。)
obj.add(new Student("John",26,7) )。)
obj.add(new Student("Jack",21,5) )。)
if(obj.contains("Peter"/span>)){
System.out.println("Peter on is on the list!")。
} else {
System.out.println("Peter不在名單上!")。
}
}
這就是學生類
public class Student{
private String studentName;
private int age。
private int rollno;
public Student(String studentName, int age, int rollno) {
this.studentName=studentName。
this.age=年齡。
this.rollno=rollno;
}
public String getStudent(){
return studentName;
}
public int getAge(){
return age。
}
public int getRollno(){
return rollno;
}
public void setStudent(String Student){
studentName=Student。
}
public void setAge(int age){
this.age=age。
}
public void setRollno(int rollno){
this.rollno=rollno。
}
}
在我運行后,結果應該顯示彼得在名單上是對的。但結果卻與此相反。似乎包含方法沒有發揮作用。
uj5u.com熱心網友回復:
一個學生不是一個名字。
.contains()在這里會失敗,因為字串"Peter"不在串列中。很明顯,它不在,怎么會在呢?畢竟,這個串列只包含學生物件,而不是字串。
你必須寫一個for回圈,或者使用流。
boolean peterIsInTheList = false。
for (var s : students) {
if (s.getName().equals("peter")) peterIsInTheList = true;
}
或者
boolean peterIsInTheList = students.stream()
.anyMatch(s -> s.getName().equals("peter")。
另外,你可以使用地圖的概念;改變你的資料結構。與其使用一個串列,不如使用一個地圖,將名字映射到學生物件上:
Map<String, Student> students = new HashMap<> ()。
students.put("peter", new Student(....));
if (students.containsKey("peter"/span>)) {
//peter是在串列中。
}
uj5u.com熱心網友回復:
你正在檢查String Peter是否在串列中,或者串列中只包含Student物件。所以你只能檢查Student是否包含在串列中(如果你想使用.contains,請確保實作正確的equals/hashcode方法)。
這樣就可以了
。obj.stream()
.filter(student -> student.getStudent().contains("Peter")
.findFirst()
.ifPresentOrElse(student -> System.out.println("Peter on is on the list!"), () -> System.out.println("Peter is not on the list!") )。
uj5u.com熱心網友回復:
由于不是默認的資料型別,我認為你需要先覆寫ArrayList的一些函式,比如.compare()的函式。
這里也有回答 Java:要在一個充滿自定義物件的 ArrayList 中使用 contains,我應該覆寫 equals 還是實作 Comparable/Comparator?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/313115.html
標籤:
上一篇:按問題型別的Dart修復
下一篇:最后一行 范圍
