所以我想计算ArrayList
中的单词数,当前我从文件中读取行并将这些行保存到ArrayList
。
该文件具有
word definition
a alpha
b bravo
c charlie
d delta
e echo
f foxtrot
所以当我执行arraylist.size()时,它会显示7。但是我想计算单词的数量。
我的代码:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
public class WarmUp {
public static void main(String[] args) {
BufferedReader br = null;
String line = null;
ArrayList<String> elements = new ArrayList<String>();
try {
br = new BufferedReader(new FileReader("src/dictionary.txt"));
while((line=br.readLine()) != null) {
elements.add(line);
}
}
catch(IOException e) {
e.printStackTrace();
}
}
}
我认为我可以使用拆分方法 所以我认为这是方法
ArrayList<String> moreElements = new ArrayList<String>();
for(int i=0; i < elements.size(); i++) {
String e = elements.get(i);
moreElements.addAll(e.split(" "));
}
然后致电moreElements.size()
但我做错了事...
答案 0 :(得分:0)
那是因为有多个空格
尝试使用类似的内容:
String e = elements.get(i);
moreElements.addAll(Arrays.asList(e.split("\\s+")));
答案 1 :(得分:0)
方法addAll()
需要一个列表,但是split()
返回一个数组。
您必须使用Arrays.asList()
将数组转换为列表。
另外,您必须用多个空格分开。
更改为此:
moreElements.addAll(Arrays.asList(e.split("\\s+")));
答案 2 :(得分:0)
如果您使用Java 8或更高版本,则可以使用(假设您的列表称为elements
):
int count = elements.stream().mapToInt(x -> x.split("\\s+").length).sum();
带循环的解决方案:
int count = 0;
for(String line : elements) {
String[] tmp = line.split("\\s+"); //split on one or more spaces
count += tmp.length;
}