将数组中的单词放入HashMap和HashSet

时间:2013-11-10 23:14:11

标签: java arrays hashmap hashset

我用blueJ编码,我想做的是:

1.a)getWordSet()中创建一个WordGroup方法:

  • 将另一个WordGroup对象作为参数
  • 创建a HashSet<String>
  • 使用两个for循环将所有单词和参数WordGroup放入HashSet
  • 返回HashSet<String>

1.b)main方法中:

  • 使用两个getWordSet() s
  • 使用WordGroup方法
  • 迭代或循环返回HashSet返回并打印出来的文字

2.a)在名为WordGroup的{​​{1}}中创建一个方法:

  • 创建getWordCounts()
  • 循环遍历HashMap<String, Integer>返回的所有字词,并将每个字词放入getWordArray()并显示其次数
  • 返回HashMap

2.b)HashMap<String, Integer>方法中:

  • main s
  • 上致电getWordCounts()
  • 使用WordGroup检索密钥集(映射的字符串部分)
  • 循环遍历此集并打印出keySet() s
  • 的单词及其计数
  • 使用WordGroup方法完成getWordSet() s
  • 中所有单词的完整设置
  • 循环新WordGroup以打印所有字词的完整列表,其中包含每个HashSet的总和计数

到目前为止我的代码:

HashMap

WordGroup类:

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);
        }
    }
}

我已经走到这一步了,现在我被卡住了。我无法弄清楚如何从teh数组中获取单词到hashset和hashmap以及如何以所需的形式返回它们。附:对于奇怪的问题布局感到抱歉 - 如果不是代码格式,字符串在hashset之后就会一直消失。

1 个答案:

答案 0 :(得分:1)

这里有一些基本的错误,你需要先解决,然后再进一步。

让我们先看看这个方法。

public HashSet<String> getWordSet(){
    HashSet<String> set = new HashSet<String>();
    for (String words : quoteOne){
        words.add(word);
    }
    return words;
}

现在,您还没有将quoteOne设置为任何内容,至少在此课程中没有。而你想要的是调用getWordArray()的返回值。所以包含行

会很好
String[] quoteOne = getWordArray();

在这个方法的某个地方。

接下来,您尝试重用变量名称。你已经在这个类中得到了words,所以为了避免混淆,如果你为循环迭代的String变量使用不同的名称会更好。

现在,当您确实想要将字符串添加到words时,您尝试将字符串添加到set,因为set是您将从此返回的内容方法。因此,除了使用add更改行外,您还需要更改return行,以使所有内容都匹配。

因此,请仔细考虑每个变量的用途,并确保正确使用每个变量。这些类型的错误中的一些将被编译器捕获,但这不是使用变量时草率的借口。

实际上将数组转换为HashSet的方法实际上较短,但我认为如果你尝试使用这种方式首先做到这一点,这将是一个很好的练习。

现在让我们看看下一个方法。

public HashMap<String, Integer> getWordCounts() {
    HashMap<String, Integer> map = new HashMap<String, Integer>();
    for (String words : words) {
        words.add(word);
    }
    return HashMap<String, Integer>;
}

你有正确的基本想法,但你错过了几个关键步骤。首先,就像在上一个方法中一样,您需要调用getWordArray()。但是现在,你还需要一步。

当您遍历循环时,您需要使用HashMap方法查看get,以查看是否已在其中记录了某个特定字词。如果是这样,您需要查看针对它记录的Integer,添加一个,然后将其放回地图中。如果没有,你可以在不做任何算术的情况下将某些东西放入地图中。

另外,请注意,向任何类型的地图添加内容的方法不是add,而是put,它需要两个参数 - 键和值。因此,在您的逻辑中,您可能会有像

这样的行
map.put(word, 1);

您可以在此次通话中看到关键字和值。

最后,请考虑一下您的return声明。您想要返回变量,而不是其类型。你能猜出你在那里使用哪个变量吗?

完成作业祝你好运。我试图指出你正确的方向,而不是为你做太多的事情。