java - 对 List 集合中的对象使用 Contains

标签 java list collections contains

我正在尝试使用 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/

相关文章:

java - hibernate GenerationType.AUTO 在 Oracle 中如何工作?

java - CQL 中是否存在 sum 函数描述?

python - 通过在列表的开头而不是尾部添加来扩展 python 列表的最佳解决方案?

java - 配置文件给我随机的值

java - 在两个 Activity 之间切换而不丢失数据

python - 防止循环内重复

c# - 为什么在循环内使用 List.IndexOf(List.Where()) 时会出现性能问题?

java - Java中有序可迭代的高效排序结构

java - 为什么不能执行 Set <Object> = new TreeSet <String>

Java 集合排序。应先大写,后小写