![](/img/trans.png)
[英]How can I remove a specific object from an arrayList and how can I check if it contains this object?
[英]How can I check if an ArrayList contains an Object with a specific field value?
我有一個Objects
的ArrayList
。 我想看看該ArrayList
包含具有特定字段的Object
。
團隊建設者.java
public class TeamBuilder {
public static void main(String[] args) {
Team team = new Team();
team.addMember(new TeamMember("myID"));
System.out.println(team.containsMember("myID")); //false
}
}
團隊成員.java
public class TeamMember {
private String id;
public TeamMember(String id) {
this.id = id;
}
public String getID() {
return this.id;
}
@Override
public boolean equals(Object o) {
if (o instanceof TeamMember) {
o = ((TeamMember) o).getID();
}
return o.equals(this.getID());
}
}
團隊.java
import java.util.ArrayList;
public class Team {
private ArrayList<TeamMember> members = new ArrayList<>();
public boolean addMember(TeamMember teamMember) {
if (members.contains(teamMember)) {
return false;
}
members.add(teamMember);
return true;
}
public boolean containsMember(String eid) {
System.out.println(members.get(0).equals(eid)); //true
System.out.println(members.contains(eid)); //false
if (members.contains(eid)) {
return true;
}
return false;
}
}
我不想使用循環,也不想覆蓋arrayList.contains()
。
我期待.contains()
遍歷我的TeamMember
列表,並在找到與傳遞的Object
相等的列表時返回true
。 這兩個Objects
是相等的,但.contains()
方法返回 false。
如何優雅地檢查Team
包含具有指定 ID 的TeamMember
? 我的印象是我可以避免 for 循環,因為Java 方法:在數組列表中查找對象給定已知屬性值,但我無法讓它工作。
最優雅的解決方案是
a.equals(b)
那么b.equals(a)
必須為真。hashCode()
並且它應該使用與 equals 方法相同的字段。HashMap<String, TeamMember>
匹配 ID 字符串 TeamMember 對象。get(String key)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.