【发布时间】:2017-04-06 23:57:43
【问题描述】:
我必须编写程序,该程序应该读取字谜文件并显示单词+他的字谜。 txt文件很大,使用scanner后listOfWords大小为:25000。
输出示例:
word anagram1 anagram2 anagram3 ...
word2 anagram1 anagram2...
我有代码,它可以运行,但是很慢:
private static List<String> listOfWords = new ArrayList<String>();
private static List<ArrayList<String>> allAnagrams = new ArrayList<ArrayList<String>>();
public static void main(String[] args) throws Exception {
URL url = new URL("www.xxx.pl/textFile.txt");
Scanner scanner = new Scanner(url.openStream());
while (scanner.hasNext()) {
String nextToken = scanner.next();
listOfWords.add(nextToken);
}
scanner.close();
while (listOfWords.isEmpty() == false) {
ArrayList<String> anagramy = new ArrayList<String>();
String wzor = listOfWords.remove(0);
anagramy.add(wzor);
char[] ch = wzor.toCharArray();
Arrays.sort(ch);
for (int i = 0; i < listOfWords.size(); i++) {
String slowo = listOfWords.get(i);
char[] cha = slowo.toCharArray();
Arrays.sort(cha);
if (Arrays.equals(ch, cha)) {
anagramy.add(slowo);
listOfWords.remove(i);
i--;
}
}
allAnagrams.add(anagramy);
}
for (ArrayList<String> ar : allAnagrams) {
String result = "";
if (ar.size() > 1) {
for (int i = 1; i < ar.size(); i++) {
result = ar.get(i) + " ";
}
System.out.println(ar.get(0) + " " + result);
}
}
}
我必须用 Java 8 - 流来编写它,但我不知道。可以使用 Streams 从 URL + 搜索字谜中读取吗?你能帮我按 Stream 搜索字谜吗?老师告诉我,阅读整个列表时,代码应该比我的短。只有几行,可以吗?
【问题讨论】:
标签: java java-8 java-stream anagram