私有类的ArrayList(集)

问题描述 投票:1回答:4

我有一类名为“教室”,我想送一个ArrayList中有classroom.setMaterias(Arraylist)。这是代码:

Class Clasroom

public class Aula implements java.io.Serializable {
private String nombre;
private String grupo;
private int tutor;
ArrayList<String> materias = new ArrayList<String>();  // ¿How create arraylist?
public Aula() {
  // Constructor
}

public String getNombre() {
 return nombre;
}

public void setNombre(String nombre) {
 this.nombre = nombre;
}

我想知道如果我能,例如,通过一组发送一个“数组列表”,然后让我在我的课“教室”先前创建的“数组列表”是完全一样的

我不知道如何创建数组列表,或设置或获取方法。你能帮我吗?

PD:这是JSON数组我说起:

  if (obj.has("materias")) {
     JSONArray materias = obj.getJSONArray("materias");
     datos.setArrayList(materias);
    // System.out.println(materias); // ["DWES","DWEC","IW","DAW","IE"]
java arrays arraylist
4个回答
0
投票
    Class Clasroom

       public class Aula implements java.io.Serializable {
       private String nombre;
       private String grupo;
       private int tutor;
       ArrayList<String> materias;  // ¿How create arraylist?
       public Aula() {
         // Constructor
        this.setArrayList(new ArrayList<>()); //Here you initialize the arraylist when you create an instance of this class.
       }

    public String getNombre() {
     return nombre;
    }

    public void setNombre(String nombre) {
     this.nombre = nombre;
    }


  //Here are the getters and setters.
   public ArrayList<String> getList(){
     return this.materias;
   }

    private void setArrayList(ArrayList<String> list){
      this.materias = list;
    }

0
投票

这样做的正确方法是使用getter和setter,直接使用List接口,而不是ArrayList<>

List<String> materias = Collections.emptyList(); 

public Aula() {
  // Constructor
}

public List<String> getMaterias() {
    return materias;
  }

  public void setMaterias(List<String> materias ) {
    this.materias = materias ;
  }

  public void addMaterias(String materia) {
    materias.add(materia);
  }

你可以有更多的addMaterias()方法将条目添加到您的List


0
投票
public class Aula implements java.io.Serializable {
  private List<String> materia = new ArrayList<>();
  ...
  public void setMateria1(final List<String> aMateria) {
    this.materia = aMateria;
  }
  public void setMateria2(final List<String> aMateria) {
    this.materia.clean();
    this.materia.addAll(aMateria);
  }
}

setMateria1()替换列表与所述给定的参数,从而以后作出的一个的任何改变(EG缺失的项目,),被反映在其它。

虽然setMateria2()拷贝参数的项目,从而删除或插入到其中的任何不改变另一个。

此外ArrayList是接口List的具体实现。优选的是,变量声明为基类或接口,而不是一个具体的实现。


0
投票
public class Aula implements java.io.Serializable {
    ArrayList<String> materias = new ArrayList<String>(); 
    ...
    public ArrayList<String> getMaterias(){
       return materias;
    }

   public void setMaterias(JSONList materias) throws JSONException {
       materias.clear();
       for(int i=0;i<materias.length();i++)
          this.materias.add(materias.getString(i));
    }
}

并把完全相同的代码进教室类。

第二种方法是设置列表在构造函数:

public class Aula implements java.io.Serializable {
    ArrayList<String> materias = new ArrayLis<>();
    ...
    public Aula(JSONList materias) throws JSONException {
        for(int i=0;i<materias.length();i++)
          this.materias.add(materias.getString(i)); 
    }
    public ArrayList<String> getMaterias(){
       return materias;
    }
}

再次同课堂。比你创建它们如。

Aula aula = new Aula(materias);
Classroom classroom = new Classroom(materias);

这是假设你在你的名单有一个字符串。否则,它取决于在列表中的数据。如果它包含其他列表它需要对它们进行合并或跳过等等...

如果JSON是不是所有的字符串(e.g有子列表和对象),它应该符合您的JSON的实际结构我需要的是结构也是一样,最有可能的字符串的ArrayList可能是错误的集装箱这样的JSON - 树。

顺便说一句。最好换教室课堂(大写C为类名)...

© www.soinside.com 2019 - 2024. All rights reserved.