krembrule2016
@krembrule2016

Как обращаться к элементам двумерной коллекции?

Всем привет!
Сделал тут двумерную коллекцию. Вот она:
public class Collection {
    ArrayList<ArrayList<Integer>> collectionOfPoints;
    ArrayList<Integer> subCollectionOfPoints;
    int x, y;
    public Collection(){
        collectionOfPoints = new ArrayList(); 
        x = 0;
        y = 0;
    }
    public void calculatePoints(){
        for(int i = 0; i < 10; i++){
            x++;
            y++;
            subCollectionOfPoints = new ArrayList<Integer>();
            subCollectionOfPoints.add(x);
            subCollectionOfPoints.add(y);
            collectionOfPoints.add(subCollectionOfPoints);
        }
        System.out.println("Коллекция точек создана!");

    }
    public ArrayList returnCallOfPoints(){
        return collectionOfPoints;
    }
}


Короче, все просто. Делается коллекция из коллекций, каждая из которых содержит пару точек. Все работает, распечатывается как надо и все такое.

if(ОбъектКлассаСРеализациейДвумернойКоллекции.returnCallOfPoints().size() != 0){
		    System.out.println(ОбъектКлассаСРеализациейДвумернойКоллекции.returnCallOfPoints().get(1));
		}


В результате имею в консоле [2, 2], что логично.
Только мне надо обратиться ко второму или первому значению вложенной коллекции. Логика подсказывает, что надо написать как-то так:
System.out.println(ОбъектКлассаСРеализациейДвумернойКоллекции.returnCallOfPoints().get(1).get(1));

Но, у создателей Java видимо была логика отличная от моей(Храни их Господи).
Как это сделать?
  • Вопрос задан
  • 518 просмотров
Решения вопроса 1
@justAnotherCluelessUser
Не буду объяснять, что это правильней было бы назвать это целочисленной матрицей, что не надо давать классу имя стандартного интерфейса и много чего ещё...
Ну а в чём вопрос-то?
В принципе правильно же рассуждаешь...
Только не надо возвращать внутренности.
лучше сделай setter/getter, где будешь проверять на возмжные ошибки и т.п.
типа
Integer getValueByIndexies(int x, int y){
//всякие проверки, чтоб небыло неконтролируемых эксепшнов, типа аутОфРэндж
return collectionOfPoints.get(x).get(y);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽