Java:如何将整数和字符串存储在数组中并在另一个类中检索值?

MOT*_*DEX 1 java arrays oop arraylist object

我有一个模型:fase.java,带有整数和字符串+ getter 和 setter:

public class Fase implements Serializable {
private Integer age;
private String name;
}
Run Code Online (Sandbox Code Playgroud)

我想将整数和字符串存储在数组或数组列表中。我现在用这个:

public String[] getAllValues(){
String[] values = {age.toString(), name};
return values;
Run Code Online (Sandbox Code Playgroud)

然后在 dataServiceImpl.java 中,我使用以下命令检索数据:

user.getFase().getAllValues()[0]; 
Run Code Online (Sandbox Code Playgroud)

并检索年龄。

这是可行的,但我有的不仅仅是年龄和姓名,并且正在考虑是否可以将 Fase.java 中的所有内容放入一个 Array/ArrayList 中,因为它们是 Integer 和 String,然后在 dataServiceImpl.java 中检索它?

Fase.java 中是这样的:ArrayList <Objects> f3Values = new ArrayList <Objects>();

或者Fase [] f3Array = new Fase[34];

然后使用以下命令在 dataServiceImpl.java 中检索它:ArrayList<Fase3.Fase3Array> f3List = new ArrayList<Fase3.Fase3Array>(); 并使用类似:user.f3List[0];?

小智 5

首先,您应该了解 Java 的工作原理。

Java是“按引用传递”还是“按值传递”?

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

然后,您应该学习如何通过定义构造函数和 getter、方法、setter(如果需要;注意一般情况下的 setter会破坏封装)等来正确创建封装类。

然后,您应该了解,要聚合数据,您需要:

  1. 创建一个类,即包含所有必要字段的定义对象,

  2. 创建一个存储聚合(数组、、、ArrayList等等Map),

3a. 创建给定类的对象,设置字段的值,

3b. 将对象添加到聚合中,

3c. 转到 3a,直到聚合填满所需的数据。

解释一下所提供的代码,您首先应该有

public class Fase implements Serializable {
  private int age;
  private String name;

  public Fase( int age, String name ) {
    this.age = age;
    this.name = name;
  }

  public int getAge() { return age; }
  public String getName() { return name; }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以创建聚合,例如

int FASE_MAX = 34;
Fase[] fArray = new Fase[FASE_MAX];
ArrayList<Fase> fArrayList = new ArrayList<Fase>(FASE_MAX);
Run Code Online (Sandbox Code Playgroud)

然后创建对象并将它们添加到聚合中,例如

for( int i = 0; i < FASE_MAX; i++ ) {
  Fase newFase = new Fase( i, "John Doe" );
  fArrayList.add( newFase );
  fArray[i] = newFase;
}
Run Code Online (Sandbox Code Playgroud)

然后,也只有这样,您才能访问聚合:

Fase someFase = fArrayList.get( n );
Fase someOtherFase = fArray[n];
Run Code Online (Sandbox Code Playgroud)