我有一个数据文件,它包含专辑的5行数据,以及500个专辑。下面的代码将每一行存储为一个新元素,但是我将5行保存为1个元素,这是可能的,我将如何更改下面的代码来执行此操作?
String file_name = "Top500Albums.txt";
String line;
ArrayList aList = new ArrayList();
try {
BufferedReader input = new BufferedReader(new FileReader(file_name));
if (! input.ready()){
throw new IOException();
}
while ((line = input.readLine()) !=null) {
aList.add(line);
}
input.close();
}
catch(IOException e) {
System.out.println(e);
}
int sz = aList.size();
for (int i=0; i< sz; i++)
{
System.out.println(aList.get(i).toString());
}
答案 0 :(得分:1)
您可以将您的arraylist数据转换为字符串数组,如下所示
您的ArrayList
List<String> list = new ArrayList<String>();
您可以使用toArray()
方法
String[] stringArray = list.toArray(new String[0]);
答案 1 :(得分:0)
如果你想转换&#39;对于数组的ArrayList,您可以使用以下代码:
private String[] toArray(ArrayList<String> arrayList) {
String[] array = new String[arrayList.size()];
arrayList.toArray(array);
return array;
}
但你应该问问自己为什么需要使用数组。 ArrayList只是一个内部数组的视图,因此查找并不像其他类型的列表那样慢,并且使用上面的方法,你将使用两倍的内存(你将把内部数组复制到一个新的内存中) )直到你的ArrayList被垃圾收集。
答案 2 :(得分:0)
如何在ArrayList中存储5行数据作为1个元素?
您创建一个包含5行的Java对象。
由于您没有告诉我们这5行的内容是什么,我只是将它们命名为line1到line5。你应该给这些字段更有意义的名字。
package com.ggl.testing;
public class Album {
private final String line1;
private final String line2;
private final String line3;
private final String line4;
private final String line5;
public Album(String line1, String line2, String line3, String line4,
String line5) {
this.line1 = line1;
this.line2 = line2;
this.line3 = line3;
this.line4 = line4;
this.line5 = line5;
}
public String getLine1() {
return line1;
}
public String getLine2() {
return line2;
}
public String getLine3() {
return line3;
}
public String getLine4() {
return line4;
}
public String getLine5() {
return line5;
}
}
然后,您创建一个专辑对象列表。
List<Album> albumList = new ArrayList<>(500);
您可以像这样将相册添加到列表中。
// Read five lines from the file
albumList.add(new Album(line1, line2, line3, line4, line5));
答案 3 :(得分:0)
您可以维护一个计数器以查看是否已启动每个新专辑数据
String file_name = "Top500Albums.txt";
String line;
ArrayList aList = new ArrayList();
int lineCounter = 1;
try {
StringBuilder albumData = new StringBuilder();
BufferedReader input = new BufferedReader(new FileReader(file_name));
if (!input.ready()) {
throw new IOException();
}
while ((line = input.readLine()) != null) {
if(lineCounter%5 == 0) {
albumData.append(line);
aList.add(albumData.toString());
albumData.setLength(0);
} else
albumData.append(line+"\n");
lineCounter++;
}
input.close();
} catch (IOException e) {
System.out.println(e);
}
int sz = aList.size();
for (int i = 0; i < sz; i++) {
System.out.println(aList.get(i).toString());
}