java如何将txt文件读取到未知大小的ArrayList
如何读取具有未知大小行的txt文件?例如:
Family1,john,mark,ken,liam
Family2,jo,niamh,liam,adam,apple,joe
每行都有不同数量的名称。我可以在使用对象类型时读入,如
family(parts[0], parts[1], parts[2])
但是如果我知道每一个的数量的话。我如何在不知道每本书有多少册的情况下阅读
FileReader fr = new FileReader("fam.txt");
BufferedReader br = new BufferedReader(fr);
String fileLines;
String[] parts;
while(br.ready())
{
fileLines = br.readLine();
parts = fileLines.split(",");
.
.
# 1 楼答案
我个人的偏好是使用Scanner类。您可以查看功能here。使用扫描仪,您可以一次解析一行文件,并将这些值存储到字符串中
然后可以对ArrayList中的族执行任何操作
# 2 楼答案
^{} :
List
接口的可调整大小的数组实现。实现所有可选的列表操作,并允许所有元素(包括null
)提供方法来操作内部用于存储列表的数组的大小每个
ArrayList
实例都有一个capacity
:用于存储列表中元素的数组大小它始终至少与列表大小一样大。当元素被添加到ArrayList
时,它的容量会自动增长。除了添加一个元素具有恒定的摊余时间成本这一事实之外,增长政策的详细信息没有被指定因此,只需读取数据并使用
ArrrayList.add(E e)
方法添加到数组列表中即可# 3 楼答案
您可以对
family()
方法使用varargs来接受数组:family(String ... parts)
或者只使用family(String[] parts)
就个人而言,我会创建一个单独的类
Family
,并且不会因为文件格式的实现细节(即每行的第一项是姓氏)而影响它:然后,您的循环可以如下所示:
# 4 楼答案
由于您试图将数据加载到一个
String[]
而该String[]
又是一个普通数组,因此您一直在挣扎。您应该使用ArrayList
来维护内部数组,并动态增加其大小更好的方法是解析
String[] parts
中的数据,并构建某个类的对象,该类将包含特定案例的数据:# 5 楼答案
用扫描仪,那容易多了。你可以把两者都放在一个while循环中
这是一个简化版本,无法正常工作,因为您必须在变量中存储一些值,以便Java正确读取它们。阅读Java Scanner上的文档以找到更详细的解释。扫描仪比你一直在做的要容易得多