我有一个包含单词的文本文件,我想将它们添加到数组列表中,但我遇到了问题

I have a text file containing words and I want to add them to an arraylist but I have a problem

这是我的文本文件的格式:

杏色
大蒜
菠萝
律师
香蕉
哈密​​瓜
樱桃
芹菜
卷心菜
黄瓜

覆盆子
猕猴桃
生菜
酸橙
芒果
甜瓜
葡萄柚

辣椒
苹果
萝卜
葡萄

我遇到的问题是文本文件包含额外的空行,我不能删除这些行。当我将单词添加到数组列表时,它会读取那些额外的空白行,我想知道如何删除这些额外的值。
这是我到目前为止想出的:

arrWords = new ArrayList<Word>();
        
        while (myReader.hasNextLine()) {
            Word w = new Word(myReader.nextLine().toLowerCase().trim());
            arrWords.add(w);
        }

arraylist 是 Word 类型,所以我想知道如何删除这些空白值或以某种方式以不同方式读取这些行。我尝试了多种解决方案,例如全部替换或删除,但其中 none 有效。

试试这个:

while (myReader.hasNextLine()) {
    String line = myReader.nextLine().toLowerCase().trim();
    if (!line.isEmpty()) {
        arrWords.add(new Word(line));
    }
}

或者,您可以使用 stream API

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class WordList {

    public static void main(String[] args) throws IOException {
        Path path = Paths.get("words.txt");
        try (Stream<String> lines = Files.lines(path)) {
            List<Word> arrWords = lines.filter(line -> !line.isBlank())
                                       .map(line -> new Word(line.strip().toLowerCase()))
                                       .collect(Collectors.toList());
            arrWords.forEach(System.out::println);
        }
    }
}

class Word {
    private String word;

    public Word(String word) {
        this.word = word;
    }

    public String toString() {
        return word;
    }
}