Java修改了arraylist上的Class元素

时间:2011-11-28 11:47:17

标签: java arraylist

我有两个这样的arraylist

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],ID [contadorParagens]以及它们存在的变种[existeNaRota]。< / p>

首先,用户输入Paragens仅使用nomeParagem(名称)及其id创建。由于后者添加了Rotas,existeNaRota它是空的。

然后将每个Paragem添加到paragens arraylist

当用户添加Rotas时,他输入Rota名称,然后输入Paragens上存在的Rotas列表。 Rotas are finally added to rotas` arraylist。

我想要做的是,当用户插入一个Paragens上存在的Rotas时,existeNaRota会填充Rotas存在Paragem的{​​{1}}

实施例

用户输入一些名称,然后创建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 arraylist,找到“Chelsea”Paragem并将“Rota A”添加到existeNaRota的第一个位置?

2 个答案:

答案 0 :(得分:2)

首先,考虑在“Paragens”中使用List而不是数组,因为您要向其中添加元素。这将允许添加(可能在列表的头部)而不移动数组中的元素。

其次,在Paragens addRota(Rota r)中提供一种方法,将Rota添加到ListRotas的{​​{1}}。< / p>

Paragens

答案 1 :(得分:1)

使用地图。

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添加到paragens中的rotas列表,如下所示:

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

以及其他事项