[英]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
上存在一个Rotas
, existeNaRota
是它们填充了Rotas
是Paragem
存在。
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.