java 我如何在一个txt文件中存储多个单词到一个字符串中?

o2gm4chl  于 2023-03-16  发布在  Java
关注(0)|答案(2)|浏览(112)

所以我在一个名为dictionary.txt的文本文件中有一个很长的单词列表,它有一个单词,然后跳到一个新行,下一个单词如下:

priceably
southwesterly
semipapal
genuine
cardiotoxicities
shoeman
Utahan
ungeodetically
Schurman
...

我仍然在努力寻找一种方法,将它们都存储在一个字符串数组中,而不必一个一个地存储。
这是我目前得到的:

String[] words = new String[0];
        int i = 0;
  
        try
        {
            Scanner scnr = new Scanner(new File("dictionary.txt"));
            String line;
            while (scnr.hasNext())
            {
              line = scnr.nextLine();
              String[] lineWords = line.split("\r?\n|\r"); 
              words = concatenate(words, lineWords);
            }
            scnr.close();
        }

我怎样才能更好地优化这个过程,使程序更快地完成这个过程?

pqwbnv8z

pqwbnv8z1#

BufferedReader在这里用于读取文件中的每一行,并将每一行添加到一个Strings的ArrayList中。

public static void main(String[] args) {
    ArrayList<String> words = new ArrayList<String>();
    try {
        BufferedReader reader = new BufferedReader(new FileReader("dictionary.txt"));
        String line = reader.readLine();
        while (line != null) {
            words.add(line);
            line = reader.readLine();
        }
        reader.close();
    } catch (Exception e) {
        System.err.println("Error reading file: " + e.getMessage());
        System.exit(1);
    }
    String[] wordsArray = words.toArray(new String[0]);
    System.out.println("Number of words in dictionary: " + wordsArray.length);
}
yhived7q

yhived7q2#

如果这对将来的任何人都有用的话,这就是我在评论中实现解决方案的方法(我没有一直使用数组列表,因为我几乎不知道如何使用它们,而且现在开始学习的截止日期已经越来越近了):

public static void main(String[] args) throws IOException {
        NumberFormat formatter = NumberFormat.getNumberInstance(Locale.US); // formats the amount of nanoseconds displayed

        List<String> words = Files.readAllLines(Paths.get("dictionary.txt"), StandardCharsets.UTF_8); // reads txt file and stores it in an array list
  
        String[] transformed = words.toArray(new String[words.size()]); // transforms array list into a String array...
        String[] wordsToSort = transformed.clone(); // makes a copy to safely change it in the future...
  
        // Testing Sorting algorithms......

List<String> words = Files.readAllLines(Paths.get("dictionary.txt"), StandardCharsets.UTF_8);这一行一次将超过600000个元素存储到一个数组列表中,这样就不需要一个循环来一一存储它们。

相关问题