【发布时间】:2016-08-12 08:58:38
【问题描述】:
我已经被这个问题困扰了几天。例如,我希望能够检查和计算 uniqueBagOfWords 中的每个单词是否出现在一个句子中,
UniqueBagOfWords = [i, like, to, play, 网球, think, football, needs, big, changes]
输出将是-
句子 - 我喜欢打网球 = 1,1,1,1,0,0,0,0,0
sentence - i like football like = 1,2,0,0,0,0,1,0,0,0
public static void main(String[] args) {
List<String> sentences = new ArrayList<String>();
sentences.add("i like to play tennis");
sentences.add("i think football needs big changes");
sentences.add("i like football like");
List<String[]> bagOfWords = new ArrayList<String[]>();
for(String str : sentences){
bagOfWords.add(str.split(" "));
}
Set<String> uniqueBagOfWords = new LinkedHashSet<String>();
for(String[] s : bagOfWords){
for(String ss : s)
for(String st : ss.split(" "))
if(!uniqueBagOfWords.contains(st))
uniqueBagOfWords.add(st);
}
我已经尝试过了,我知道它不对,但不知道从这里去哪里。任何帮助都会很棒!
for(String s : sentences){
for(String ss : s.split(" ")){
int count= 0;
for(int loop=0; loop <uniqueBagOfWords.size(); loop++){
if(uniqueBagOfWords.contains(ss)){
count +=1;
}
}
System.out.println(ss +" "+ count);
【问题讨论】:
-
为什么还要使用 set 呢?你可以用arraylist来做。
-
如何从“我喜欢打网球”得到
1,1,1,1,0,0,0,0,0?不应该有5个,因为“网球”在包里? -
你有一个哈希集。你不需要遍历它。只需使用
contains()。
标签: java string arraylist hashset word-count