把字从数组成HashMap和一个HashSet(Putting words from an arra

2019-10-29 17:19发布

我编码在BlueJ的和我所试图做的是这样的:

1.A)创建getWordSet()在方法WordGroup其中:

  • 另需WordGroup对象作为参数
  • 创建a HashSet<String>
  • 使用两个for循环把所有从这个词和参数WordGroupHashSet
  • 返回HashSet<String>

1.B)main方法:

  • 使用getWordSet()方法使用两个WordGroup小号
  • 迭代或环比HashSet返回,并从它打印的话

2.A)创建在一个方法WordGroup称为getWordCounts()其中:

  • 创建HashMap<String, Integer>
  • 遍历返回的所有单词getWordArray()并把每个单词到HashMap与它发生的次数
  • 返回HashMap<String, Integer>

2.B)main方法:

  • 调用getWordCounts()上的两个WordGroup小号
  • 使用keySet()来检索密钥的集合(映射的字符串部分)
  • 遍历这个集合,并打印出来的字和它的两个计数WordGroup小号
  • 使用getWordSet()方法,使全套的话都来自WordGroup小号
  • 循环在新HashSet从每个打印与和计数的所有字的完整列表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);
        }
    }
}

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>();
        for (String words : quoteOne){
            words.add(word);
        }
        return words;
    }

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

}    

到目前为止,我已经得到了这个,现在我卡住了。 我无法弄清楚如何从德数组HashSet中和HashMap,以及如何在需要的形式回报他们得到的话。 PS关于奇怪的问题,遗憾的版图串保持HashSet的后消失,如果它是不是在代码格式)

Answer 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声明。 要返回一个变量,而不是它的类型。 你能猜到你会使用哪个变量呢?

祝你完成任务。 我一直在努力,你指出正确的方向没有做太多的这个要求。



文章来源: Putting words from an array into a HashMap and a HashSet