如何从文本文件创建一个对象数组列表,并让每个对象成为 java 中的一个数组?
How do you create an array list of objects from a text file and have each object be an array in java?
您如何能够导入 .txt 文件,然后将每一行作为一个对象放入数组列表中,但每个对象都是一个数组。
.txt 文件如下所示:
1 a 1 2
1 b 0 1
2 a 2 3
2 b 0 3
3 a 3 1
3 b 0 3
我希望能够使每一行成为对象数组,这样我就可以调用对象和数组中的特定点:
<1,a,1,2>
<1,b,0,1>
<2,a,2,3>
<2,b,0,3>
<3,a,3,1>
<3,b,0,3>
然后有一个数组列表,其中每一行(可以有任意数量的行,因此我选择数组列表的原因)是数组列表中的一件事。有点像 <line1,line2,line3,etc..>
,所以我可以使用数组列表,然后使用数组列表中各个数组中的值。
这是我目前拥有的代码,我不知道从这里去哪里。我正在使用缓冲 reader
Scanner input = new Scanner(System.in); // Create a Scanner object
String inputString = input.nextLine();
try {
BufferedReader FSMreader = new BufferedReader(new FileReader(args[0]));
List<FSMline> line = new ArrayList<>();
List<String> currentState = new ArrayList<>();
List<String> inputChoice = new ArrayList<>();
List<String> outputFunction = new ArrayList<>();
List<String> nextState = new ArrayList<>();
String lines;
while ((lines = FSMreader.readLine()) != null) {
line.add(new FSMline(lines.split(" ")));
}
感谢任何帮助,因为我 运行 在 class 的截止日期前没有时间,我很难理解。
谢谢
因为你没有提到 FSMline
的数据类型,我创建了一个集合(数组的数组列表)- List<String[]>
- 来存储给定文本文件的内容,如下所示:
BufferedReader fsmReader = new BufferedReader(new FileReader(args[0]));
List<String[]> contentList = new ArrayList<>();
String lines;
while ((lines = fsmReader.readLine()) != null) {
contentList.add(lines.split(" "));
}
//print the list
for (String[] content : contentList) {
System.out.println(Arrays.toString(content));
}
控制台输出:
[1, a, 1, 2]
[1, b, 0, 1]
[2, a, 2, 3]
[2, b, 0, 3]
[3, a, 3, 1]
[3, b, 0, 3]
已更新
如果你想获取数组列表中第一个数组的第三个元素,请分别使用get(int index)
和[int index]
从列表和数组中检索元素:
System.out.println(contentList.get(0)[2]);
或者,你可以使用Arrays.asList()
将数组转换为列表,那么你也可以使用get(int index)
:
System.out.println(Arrays.asList(contentList.get(0)).get(2));
您如何能够导入 .txt 文件,然后将每一行作为一个对象放入数组列表中,但每个对象都是一个数组。
.txt 文件如下所示:
1 a 1 2
1 b 0 1
2 a 2 3
2 b 0 3
3 a 3 1
3 b 0 3
我希望能够使每一行成为对象数组,这样我就可以调用对象和数组中的特定点:
<1,a,1,2>
<1,b,0,1>
<2,a,2,3>
<2,b,0,3>
<3,a,3,1>
<3,b,0,3>
然后有一个数组列表,其中每一行(可以有任意数量的行,因此我选择数组列表的原因)是数组列表中的一件事。有点像 <line1,line2,line3,etc..>
,所以我可以使用数组列表,然后使用数组列表中各个数组中的值。
这是我目前拥有的代码,我不知道从这里去哪里。我正在使用缓冲 reader
Scanner input = new Scanner(System.in); // Create a Scanner object
String inputString = input.nextLine();
try {
BufferedReader FSMreader = new BufferedReader(new FileReader(args[0]));
List<FSMline> line = new ArrayList<>();
List<String> currentState = new ArrayList<>();
List<String> inputChoice = new ArrayList<>();
List<String> outputFunction = new ArrayList<>();
List<String> nextState = new ArrayList<>();
String lines;
while ((lines = FSMreader.readLine()) != null) {
line.add(new FSMline(lines.split(" ")));
}
感谢任何帮助,因为我 运行 在 class 的截止日期前没有时间,我很难理解。
谢谢
因为你没有提到 FSMline
的数据类型,我创建了一个集合(数组的数组列表)- List<String[]>
- 来存储给定文本文件的内容,如下所示:
BufferedReader fsmReader = new BufferedReader(new FileReader(args[0]));
List<String[]> contentList = new ArrayList<>();
String lines;
while ((lines = fsmReader.readLine()) != null) {
contentList.add(lines.split(" "));
}
//print the list
for (String[] content : contentList) {
System.out.println(Arrays.toString(content));
}
控制台输出:
[1, a, 1, 2]
[1, b, 0, 1]
[2, a, 2, 3]
[2, b, 0, 3]
[3, a, 3, 1]
[3, b, 0, 3]
已更新
如果你想获取数组列表中第一个数组的第三个元素,请分别使用get(int index)
和[int index]
从列表和数组中检索元素:
System.out.println(contentList.get(0)[2]);
或者,你可以使用Arrays.asList()
将数组转换为列表,那么你也可以使用get(int index)
:
System.out.println(Arrays.asList(contentList.get(0)).get(2));