在数组中的同一索引处保存多个值
Holding multiple values at same index in array
我的代码检索了一些步骤,然后通过for循环在每个步骤输出一条指令。将有标题、描述、视频和音频。但是,我正在想办法将每个变量存储到一个结构中。这是我想出的,但我不认为数组可以在同一索引处存储多个值。
for(int i = 0; i < QRData.number_steps; i++){
System.out.println("Inside for loop");
array[i].setTitle(btn_instructions.get(i));
array[i].setDescription(instruction_row.get(i));
array[i].setInstructionVideo(videos.get(i));
array[i].setAudioInstruction(audio.get(i));
}
有什么更好的方法来存储这些值,以便以后轻松检索它们?我很确定我的方法行不通。
您应该创建一个新对象来存储这些值,然后将该对象存储在数组中。
您必须使用对象数组,使用它您将创建一个 class 和您的 class 的数组,例如检查以下代码:
class Person{
private String name;
private Integer age;
Person(String name,Integer age){
this.name=name;
this.age=age;
}
----getters and setters methods-----
}
class Test{
public static void main(String args[]){
Person arr[]=new Person[10];
arr[0]=new Person("Alex",26);
}
}
在此处查看完整示例http://www.java2s.com/Tutorial/Java/0200__Generics/ArraysStoringclassobjectsinArrayasdataitems.htm
干杯
您应该创建一个 Object 如:
public class DataStorage{
private String title;
private String description;
private File audioFile;
private File videoFile;
public DataStorage(String title, String description, File audioFile, File videoFile){
this.title = title;
this.description = description;
this.audioFile = audioFile;
this.videoFile = videoFile;
}
public String getTitle(){
return this.title;
}
//similar for "description", "audioFile" and "videoFile"
//...
}
对于 DataStorage,我建议使用 ArrayList,因为它是动态的,您可以在 Programm 为 运行 时添加新元素。
然后你可以用循环将数据保存在那里:
ArrayList<DataStorage> storage = new ArrayList<>();
for(int i = 0; i < QRData.number_steps; i++){
storage.add(new DataStorage(btn_instructions.get(i),instruction_row.get(i),
videos.get(i),audio.get(i));
}
这是object面向编程定义classes来存储自定义数据的基本概念。
您现在可以通过调用 Datastorage class 的 "getters" 从数组中获取数据。
例如:
String title = storage.get(itemNumber).getTitle();
为您提供 "itemNumber" 标题的价值。
我的代码检索了一些步骤,然后通过for循环在每个步骤输出一条指令。将有标题、描述、视频和音频。但是,我正在想办法将每个变量存储到一个结构中。这是我想出的,但我不认为数组可以在同一索引处存储多个值。
for(int i = 0; i < QRData.number_steps; i++){
System.out.println("Inside for loop");
array[i].setTitle(btn_instructions.get(i));
array[i].setDescription(instruction_row.get(i));
array[i].setInstructionVideo(videos.get(i));
array[i].setAudioInstruction(audio.get(i));
}
有什么更好的方法来存储这些值,以便以后轻松检索它们?我很确定我的方法行不通。
您应该创建一个新对象来存储这些值,然后将该对象存储在数组中。
您必须使用对象数组,使用它您将创建一个 class 和您的 class 的数组,例如检查以下代码:
class Person{
private String name;
private Integer age;
Person(String name,Integer age){
this.name=name;
this.age=age;
}
----getters and setters methods-----
}
class Test{
public static void main(String args[]){
Person arr[]=new Person[10];
arr[0]=new Person("Alex",26);
}
}
在此处查看完整示例http://www.java2s.com/Tutorial/Java/0200__Generics/ArraysStoringclassobjectsinArrayasdataitems.htm
干杯
您应该创建一个 Object 如:
public class DataStorage{
private String title;
private String description;
private File audioFile;
private File videoFile;
public DataStorage(String title, String description, File audioFile, File videoFile){
this.title = title;
this.description = description;
this.audioFile = audioFile;
this.videoFile = videoFile;
}
public String getTitle(){
return this.title;
}
//similar for "description", "audioFile" and "videoFile"
//...
}
对于 DataStorage,我建议使用 ArrayList,因为它是动态的,您可以在 Programm 为 运行 时添加新元素。 然后你可以用循环将数据保存在那里:
ArrayList<DataStorage> storage = new ArrayList<>();
for(int i = 0; i < QRData.number_steps; i++){
storage.add(new DataStorage(btn_instructions.get(i),instruction_row.get(i),
videos.get(i),audio.get(i));
}
这是object面向编程定义classes来存储自定义数据的基本概念。
您现在可以通过调用 Datastorage class 的 "getters" 从数组中获取数据。 例如:
String title = storage.get(itemNumber).getTitle();
为您提供 "itemNumber" 标题的价值。