将文本文件内容写入 Java 中的自定义数组列表

Posted

技术标签:

【中文标题】将文本文件内容写入 Java 中的自定义数组列表【英文标题】:Write text file content into custom arraylist in Java 【发布时间】:2015-06-15 01:08:20 【问题描述】:

假设我有一个文本文件 DataBase.txt,其内容如下:

1    leo               messi              12.12.1986
2    cristiano         ronaldo            22.01.1985
3    arjen             robben             14.11.1991

还有一个如下所示的自定义数组列表:

public static ArrayList<Rows> InfoList = new ArrayList<Rows>();

这是我的 Rows 类实现,带有 setter、getter 和 toString 方法:

public class Rows 

    public int id;
    public String firstName;
    public String secondName;
    public String dateOfbrth;

    @Override
    public String toString() 
        return this.id + "      " + this.firstName + "      " + 
                this.secondName + "      " + this.dateOfbrth;
    

    public int getId() 
        return id;
    
    public String getFirstName() 
        return firstName;
    
    public String getSecondName() 
        return secondName;
    
    public String getDateOfbrth() 
        return dateOfbrth;
    
    public void setId(int id) 
        this.id = id;
    
    public void setFirstName(String firstName) 
        this.firstName = firstName;
    
    public void setSecondName(String secondName) 
        this.secondName = secondName;
    
    public void setDateOfbrth(String dateOfbrth) 
        this.dateOfbrth = dateOfbrth;
    

所以。问题是:如何将文本文件内容写入 arrayList,其中每个元素都将被引用到类 Rows 中自己的字段。尽管每行中的空格数不同?哪些算法或 Java 类将有助于解决这个问题?

我是 Java 新手,所以我尝试使用 BuffredReader 来做到这一点,但我坚持分离 line 并将每个元素添加到 数组列表:

try (BufferedReader br = new BufferedReader(new FileReader("F:/DataBase.txt"))) 
    for (String line; (line = br.readLine()) != null; ) 

    

感谢您的帮助

【问题讨论】:

你应该搜索一下,这个问题已经被问过很多次了。 【参考方案1】:
    while ((line = br.readLine()) != null) 
            String[] row = line.split("\\s+");
            Row row = new Row();
            row.setId(row[0]);
            row.setFirstName(row[1]);
            row.setSecondName(row[2]);
            row.setDateOfbrth(row[3]);
            InfoList.add(row);
        

\s+ 是一个正则表达式,它将导致任意数量的连续空格将您的字符串拆分为标记,请参阅此答案How to split a String by space 希望对您有所帮助。

【讨论】:

【参考方案2】:

就是这样:

try (BufferedReader br = new BufferedReader(new FileReader("F:/DataBase.txt"))) 
    String line;
    while((line = br.readLine())!=null ) 
        String[] values = line.split("\\s+");
        ...
    

【讨论】:

以上是关于将文本文件内容写入 Java 中的自定义数组列表的主要内容,如果未能解决你的问题,请参考以下文章

根据 JSON 文件中的内容文本调整带有 UILabel 的自定义单元格的大小

如何使用 glide* 使用数组列表中的自定义适配器将图像设置为列表视图

无法将 IDFA 列表添加到 iAd Workbench 中的自定义细分 - 我的受众

如何将数组的内容写入文本文件,每行一个数据?

找到数据时表格视图中的自定义标签文本?目标c

Python中的自定义数组值Hive UDF?