如何在Arraylist中查找具有多个属性的对象?

时间:2011-11-20 05:36:11

标签: java arraylist

我有一个具有构造函数的类,如下所示:

public Stock(String symbol, String name, int value) {
    this.symbol = symbol;
    this.name = name;
    this.value = value;
}

现在,我有另一个类是抽象数据类型:

public class Holding {
    private Stock stock;
    private int amount;

    public Holding() {
        this.stock = null;
        this.amount = 0;
    }

    public Holding(Stock stock, int amount) {
        this.stock = stock;
        this.amount = amount;
    }
}

现在,我正在另一个类中编写一个方法。

我使用上面的Hold类创建了一个arraylist。 在这堂课

private ArrayList<Holding> holdings;

现在,我知道我在Hold类中的对象包含一个stock对象和一个int amount。

如何只访问Holding ArrayList?

中我的stock对象中的符号

3 个答案:

答案 0 :(得分:2)

不确定你的意思。

for (Holding h : holdings) {
    out.println(h.getStock().getSymbol());
}

假设你有适当的吸气剂。

答案 1 :(得分:0)

您可能希望使用Java的foreach循环遍历ArrayList:

for (Holding currentHolding : holdings) {
  System.out.println(currentHolding.stock.symbol); // prints out all the symbols
}

您需要将属性Stock从private更改为public,或者创建一个getStock方法来返回它。否则,由于它是私有的,您无法访问它。

答案 2 :(得分:0)

  

如何只能访问Holding ArrayList中我的stock对象中的符号?

使用给定的代码,您无法执行此操作。

  • 您需要为stock类的Holding字段添加公共getter方法。
  • 您(可能)需要为symbol类的Stock字段添加公共getter方法。

完成后,您可以执行以下操作:

public Holding getHoldingForSymbol(List<Holding> holdings, String symbol) {
    for (Holding h : holdings) {
        if (h.getStock().getSymbol().equals(symbol)) {
            return h;
        }
    }
    return null;  // or throw an exception
}