【问题标题】:Java modify Class element on arraylistJava修改arraylist上的Class元素
【发布时间】:2011-11-28 11:47:17
【问题描述】:

我有两个这样的数组列表

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]和他们存在的轮播[existeNaRota]。

首先,用户输入Paragens 女巫只能使用nomeParagem(它的名字)及其id 创建。由于 Rotas 是后面添加的,existeNaRota 是空的。

然后将每个Paragem 添加到paragens 数组列表中

当用户添加Rotas 时,他输入Rota 名称,然后输入Paragens 的列表存在于该Rotas 上。 Rotas are finally added torotas` 数组列表。

我想要做的是,当用户插入存在于一个Rotas 上的Paragens 时,existeNaRota 是否填充了Rotas 存在的Paragem

示例。

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

【问题讨论】:

    标签: java arraylist


    【解决方案1】:

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

    其次,在Paragens 中提供一个方法,如addRota(Rota r),将Rota 添加到Rotas 中的ListRotas

    class Paragens{
       List<Rota> existEnRota = new ArrayList<Rota>();
    
    
       public void addRota(Rota r){
           existEnRota.add(0, r);
       }
    }
    

    【讨论】:

      【解决方案2】:

      使用地图。

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

      还有其他东西

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多