繁体   English   中英

Java修改ArrayList上的Class元素

[英]Java modify Class element on 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++;
}

我还有另一堂课。 Rotas类。

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

因此,有Paragens (每个都有一个名称[ nomeParagem ],一个id [ contadorParagens ]以及位于它们之间的rotas [ existeNaRota ]。

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

然后将每个Paragem添加到paragens arraylist

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

我想要做的是,当用户插入Paragens上存在一个RotasexisteNaRota是它们填充了RotasParagem存在。

例。

用户输入一些名称,然后按Paragens方式创建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我有此set方法

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

是否可以访问paragens arraylist,找到“ Chelsea” Paragem并将“ Rota A”添加到existeNaRota的第一个位置?

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

其次,在Paragens提供类似addRota(Rota r) ,将Rota添加到Rotas中的Paragens List中。

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


   public void addRota(Rota r){
       existEnRota.add(0, r);
   }
}

使用地图。

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将添加到paragen中的角色列表中,如下所示:

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

连同其他东西

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM