我试图在我的Main类中的2个wordgroups上使用我的WordGroup类中的getWordSet()方法,并循环返回的hashset并打印出结果,但它甚至没有编译。我希望这个代码的尝试是在星号之间的主要课程的底部。有人可以帮帮我吗?编辑:我已经实现了如下面的代码所示的建议更改,这导致了一个新问题 - 我希望两个wordgroups进入相同的集合,但是当我尝试将hashSTwo更改为hashSOne以尝试将所有单词转换为hashSOne它不会编译。
import java.util.HashSet;
import java.util.HashMap;
public class Main{
public static void main(String[] args){
WordGroup wordgroupOne= new WordGroup ("You can discover more about a person in an hour of play than in a year of conversation");
WordGroup wordgroupTwo= new WordGroup ( "When you play play hard when you work dont play at all");
String[] quoteOne = wordgroupOne.getWordArray();
String[] quoteTwo = wordgroupTwo.getWordArray();
for (String words : quoteOne){
System.out.println(words);
}
for (String words : quoteTwo){
System.out.println(words);
}
**HashSet<String> hashSOne = wordgroupOne.getWordSet();
HashSet<String> hashSTwo = wordgroupTwo.getWordSet();
for (String set : hashSOne){
System.out.println(set);
}
for (String set : hashSTwo){
System.out.println(set);
}**
}
}
WordGroup设置:
import java.util.HashSet;
import java.util.HashMap;
public class WordGroup {
public String words;
public WordGroup (String getWords){
words = getWords.toLowerCase();
}
public String[] getWordArray(){
return words.split(" ");
}
public HashSet<String> getWordSet(){
HashSet<String> set = new HashSet<String>();
String[] p = getWordArray();
for (String items : p){
set.add(items);
}
System.out.println(set);
return set;
}
public HashMap<String, Integer> getWordCounts() {
HashMap<String, Integer> map = new HashMap<String, Integer>();
String[] q = getWordArray();
for (String stuff : q) {
Integer oldVal = map.get(stuff);
if (oldVal == null){
oldVal = 0;
}
map.put(stuff, oldVal+1);
}
System.out.println(map);
return map;
}
}
答案 0 :(得分:1)
您不应在getWordSet()
上使用quoteOne
,因为它是String[]
且它没有此类方法。您可能希望在wordgroupOne
类型的WordGroup
上使用它。同样适用于quoteTwo
。
如果可能的话,你应该更喜欢programming on interfaces而不是实际的类,所以可能会改变你的方法来返回Set
而不是HashSet
。
我如何将两个结果放在同一个hashset中?我尝试将它们更改为hashSOne,它只用第二个
写了我的第一个hashset
你可能已经
了hashSOne = hashSTwo;
仅使用hashSOne
引用中的hashSTwo
引用设置。
如果你想创建一个包含两个集合中所有项目的新集合,你可以这样做
//lets create Set with elements from first set
Set<String> allElements = new HashSet<>(hashSOne);
//now lets add all elements from second set
allElements.addAll(hashSTwo);//this will not add duplicates
答案 1 :(得分:0)
也许从查看getWordArray()方法开始。我怀疑你的正则表达式有点躲闪。 有关空格拆分正则表达式,请参阅此SO链接。
答案 2 :(得分:0)
你肯定应该更具体地说明未来帖子的错误。如果没有编译器的帮助,很难找到错误。
HashSet<String> hashSOne = quoteOne.getWordSet();
HashSet<String> hashSTwo = quoteTwo.getWordSet();
应该是
HashSet<String> hashSOne = wordgroupOne.getWordSet();
HashSet<String> hashSTwo = wordgroupTwo.getWordSet();