简体   繁体   English

Java修改ArrayList上的Class元素

[英]Java modify Class element on arraylist

I have two arraylist like this 我有两个这样的arraylist

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

Paragens is a class and the constructor is Paragens是一个类,构造函数是

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

I have another class. 我还有另一堂课。 The Rotas class. Rotas类。

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

So there are Paragens (each one with a name[ nomeParagem ], an id[ contadorParagens ] and the rotas in wich they exist [ existeNaRota ]. 因此,有Paragens (每个都有一个名称[ nomeParagem ],一个id [ contadorParagens ]以及位于它们之间的rotas [ existeNaRota ]。

First, the user inputs Paragens witch are only created with nomeParagem (it's name) and its id . 首先,仅使用nomeParagem (它的名称)及其id创建用户输入Paragens巫婆。 Since Rotas are added latter, existeNaRota it's empty. 由于Rotas是在以后添加的, existeNaRota为空。

Each Paragem is then added to paragens arraylist 然后将每个Paragem添加到paragens arraylist

When user adds an Rotas he inputs Rota name and then the list of Paragens that exist on that Rotas . 当用户添加Rotas他输入Rota名称,然后列表Paragens上存在Rotas Rotas are finally added to rotas` arraylist. Rotas are finally added to Rotas Rotas are finally added to rotas的arraylist中。

What I want to do is, when user insert Paragens that exists on one Rotas , existeNaRota is them populated with the Rotas that Paragem exists. 我想要做的是,当用户插入Paragens上存在一个RotasexisteNaRota是它们填充了RotasParagem存在。

Example. 例。

User inputs some names and then Paragens are created like this: 用户输入一些名称,然后按Paragens方式创建Paragens

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

Now user will input Rotas like this: 现在,用户将这样输入Rotas

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

Now, since there is a Rota I want to go back to Paragens and put the name on existeNaRota . 现在,由于有一个Rota我想回到Paragens并将其名称放在existeNaRota

On Paragens I have this set method Paragens我有此set方法

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

Is it possible to access the paragens arraylist, find the "Chelsea" Paragem and add "Rota A" to the first position of existeNaRota ? 是否可以访问paragens arraylist,找到“ Chelsea” Paragem并将“ Rota A”添加到existeNaRota的第一个位置?

First, consider using a List in `Paragens' instead of an array since you are going to be adding elements to it. 首先,考虑在“ Paragens”中使用List而不是数组,因为您将向其中添加元素。 This will allow for adding (potentially to the head of the list) without moving elements in the array. 这将允许添加(可能在列表的开头),而无需在数组中移动元素。

Second, provide a method in Paragens like addRota(Rota r) that adds the Rota to the List of Rotas in the Paragens . 其次,在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);
   }
}

Use a Map. 使用地图。

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

Assuming here addRota adds to list of rotas in paragens, like so: 假设在这里,addRota将添加到paragen中的角色列表中,如下所示:

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

along with other things 连同其他东西

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

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