gpt4 book ai didi

java - 从文件中读取单词后,按字母顺序在 java 中创建单词数组

转载 作者:行者123 更新时间:2023-11-30 07:32:01 26 4
gpt4 key购买 nike

我有以下代码,可以打开并读取文件并将其分隔为单词。我的问题是按字母顺序排列这些单词的数组。

import java.io.*;

class MyMain {
public static void main(String[] args) throws IOException {
File file = new File("C:\\Kennedy.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String line = null;
int line_count=0;
int byte_count;
int total_byte_count=0;
int fromIndex;
while( (line = br.readLine())!= null ){
line_count++;
fromIndex=0;
String [] tokens = line.split(",\\s+|\\s*\\\"\\s*|\\s+|\\.\\s*|\\s*\\:\\s*");
String line_rest=line;
for (int i=1; i <= tokens.length; i++) {
byte_count = line_rest.indexOf(tokens[i-1]);
//if ( tokens[i-1].length() != 0)
//System.out.println("\n(line:" + line_count + ", word:" + i + ", start_byte:" + (total_byte_count + fromIndex) + "' word_length:" + tokens[i-1].length() + ") = " + tokens[i-1]);
fromIndex = fromIndex + byte_count + 1 + tokens[i-1].length();
if (fromIndex < line.length())
line_rest = line.substring(fromIndex);
}
total_byte_count += fromIndex;
}
}
}

最佳答案

我会用 Scanner 读取文件 1(我希望 File(String,String) 构造函数提供父文件夹)。而且,您应该记住在 finally block 中显式关闭您的资源或者您可能会使用 try-with-resources statement 。最后,为了排序,您可以将单词存储在 TreeSet 中。其中元素使用其 natural ordering 进行排序2。比如,

File file = new File("C:/", "Kennedy.txt");
try (Scanner scanner = new Scanner(file)) {
Set<String> words = new TreeSet<>();
int line_count = 0;
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
line_count++;
String[] tokens = line.split(",\\s+|\\s*\\\"\\s*|\\s+|\\.\\s*|\\s*\\:\\s*");
Stream.of(tokens).forEach(word -> words.add(word));
}
System.out.printf("The file contains %d lines, and in alphabetical order [%s]%n",
line_count, words);
} catch (Exception e) {
e.printStackTrace();
}

1主要是因为它需要的代码较少。
2或通过 Comparator在设定的创建时间提供

关于java - 从文件中读取单词后,按字母顺序在 java 中创建单词数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35973174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com