Java модифицирует элемент Class в массиве - PullRequest
0 голосов
/ 28 ноября 2011

У меня есть два архива, как это

ArrayList<Paragens> paragens = new ArrayList<Paragens>();
ArrayList<Rotas> rotas = new ArrayList<Rotas>();

Paragens - это класс, а конструктор -

public Paragens(String nomeParagem) {
    this.nomeParagem = nomeParagem;
    this.existeNaRota = new String[]{"","","","","","","","","","","","","",
    "","","","","","","","","","","","","","","","","","","","","","","","",
    "","","","","","","","","","","","","","","","","","","","","","","","",
    "","","","","","","","","","","","","","","","","","","","","","","",""};
    this.id = contadorParagens++;
}

У меня есть другой класс. Класс Ротас.

public Rotas(String nomeRota, Paragens[] nomeParagens) {
    this.nomeRota = nomeRota;
    this.nomeParagens = nomeParagens;
    this.id = contadorRotas++;
}

Итак, есть Paragens (каждый с именем [nomeParagem], идентификатором [contadorParagens] и ротами, в которых они существуют [existeNaRota].

Во-первых, пользовательские вводы Paragens witch создаются только с nomeParagem (это имя) и его id. Поскольку Rotas добавляются последними, existeNaRota пусто.

Каждый Paragem затем добавляется в paragens arraylist

Когда пользователь добавляет Rotas, он вводит Rota имя и затем список Paragens, которые существуют в этом Rotas. Rotas are finally added to Rotas` Arraylist.

То, что я хочу сделать, это когда пользователь вставляет Paragens, который существует на одном Rotas, existeNaRota, если они заполнены Rotas, который существует Paragem.

* +1039 * Пример.

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

paragem = new Paragens("London");
paragens.add(paragem);
paragem = new Paragens("Manchester");
paragens.add(paragem);
paragem = new Paragens("Chelsea");
paragens.add(paragem);

Теперь пользователь будет вводить Rotas следующим образом:

estacoes[0] = "Chelsea";
estacoes[1] = "London";
rota = new Rotas("Route A", estacoes);
rotas.add(rota);

Теперь, поскольку есть Rota, я хочу вернуться к Paragens и поставить имя на existeNaRota.

Вкл. Paragens У меня есть этот метод установки

public void setExisteNaRota(String existeNaRota, int indice) {
    this.existeNaRota[indice] = existeNaRota;
    indice++;
}

Можно ли получить доступ к массиву paragens, найти "Челси" Paragem и добавить "Рота А" в первую позицию existeNaRota?

Ответы [ 2 ]

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

Во-первых, рассмотрите возможность использования List в `Paragens 'вместо массива, поскольку вы собираетесь добавлять в него элементы.Это позволит добавлять (потенциально в начало списка) без перемещения элементов в массиве.

Во-вторых, предоставить метод в Paragens, например addRota(Rota r), который добавляет Rota к List из Rotas в Paragens.

class Paragens{
   List<Rota> existEnRota = new ArrayList<Rota>();


   public void addRota(Rota r){
       existEnRota.add(0, r);
   }
}
1 голос
/ 28 ноября 2011

Используйте карту.

Map<String, Paragens> paragens = new HashMap<String, Paragens>();
paragens.put("London", new Paragens("London");
paragens.put("Chelsea", new Paragens("Chelsea");
paragens.put("Manchester", new Paragens("Manchester");
estacoes[0] = "Chelsea";
estacoes[1] = "London";
Rotas rota = new Rotas("Route A", estacoes);
rotas.add(rota);
Paragens p = paragens.get(estacoes[0]);
if (p != null) {
    p.addRota(rota);
}
p = paragens.get(estacoes[1]);
if (p != null) {
    p.addRota(rota);
}

Предполагая, что здесь addRota добавляет список ротас в парагенах, например так:

public class Paragens {
    List<Rotas> existeNaRota = new ArrayList<Rotas>();
    public void addRota(Rotas r) {
        existeNaRota.add(r);
    }
}

вместе с другими вещами

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