我正在尝试使用 Contains 方法通过他的名字在 List 集合中查找一个对象,但不知何故,它不起作用。我应该如何使用它?
这就是我尝试使用它的方式
CandyDao.getAllCandys().contains("Caramel")
但它找不到我需要的对象。
CandyDao.java
public class CandyDao {
private List<Candy> candys = Arrays.asList(new Candy("Caramel", 3, false),
new Candy("Marmelade", 2, true));
public List<Candy> getAllCandys(){
return candys;
}
}
糖果.java
public class Candy {
private String name;
private float price;
private boolean InStock;
public Candy() {
}
public Candy(String name, float price, boolean InStock) {
setName(name);
setPrice(price);
setInStock(InStock);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
public boolean getInStock() {
return InStock;
}
public void setInStock(boolean InStock) {
this.InStock = InStock;
}
}
最佳答案
由于列表包含Candy
对象,contains()
方法需要一个Candy
对象来进行比较,所以不能使用包含(“焦糖”)
。
要检查列表是否包含 name
为 "Caramel"
的 Candy
对象,您可以使用 Java 8+ Streams 来执行搜索:
CandyDao.getAllCandys().stream().Map(Candy::getName).anyMatch("Caramel"::equals);
等效的非流版本是:
boolean hasCaramel = false;
for (Candy candy : CandyDao.getAllCandys()) {
if ("Caramel".equals(candy.getName())) {
hasCaramel = true;
break;
}
}
关于java - 对 List 集合中的对象使用 Contains,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52803869/