Как искать объекты с несколькими атрибутами в Arraylist? - PullRequest
0 голосов
/ 20 ноября 2011

У меня есть класс, конструктор которого выглядит следующим образом:

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;
    }
}

Теперь я пишу метод в другом классе.

Я создал arraylist, используя класс Holding выше. в этом классе

private ArrayList<Holding> holdings;

Теперь я знаю, что мои объекты в классе Holding содержат объект stock и сумму int.

Как я могу получить доступ только к символу в моем стоковом объекте в Holding ArrayList?

Ответы [ 3 ]

2 голосов
/ 20 ноября 2011

Не уверен, что вы имеете в виду.

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

Это при условии, что у вас есть соответствующие добытчики.

0 голосов
/ 20 ноября 2011

Как я могу получить доступ только к символу в моем стоковом объекте в Holding ArrayList?

С указанным кодом вы не можете сделать это.

  • Вам необходимо добавить открытый метод получения для поля stock класса Holding.
  • Вам (возможно) необходимо добавить открытый метод получения для поля symbol поля Stock класс.

Когда вы это сделаете, вы можете сделать что-то вроде этого:

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
}
0 голосов
/ 20 ноября 2011

Вы хотите использовать Java foreach для циклического перебора ArrayList:

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

Вам необходимо изменить атрибут Stock с private на public или создать метод getStock, чтобы вернуть его.В противном случае, поскольку он является частным, вы не сможете получить к нему доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...