当前位置: 首页 > 知识库问答 >
问题:

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

容寒
2023-03-14

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

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

  • 将另一个字组对象作为参数
  • 创建哈希集

1.b)在main方法中:

  • 使用两个WordGroups

2.a)在WordGroup中创建一个名为getWordCounts()的方法,该方法:

  • 创建哈希映射

2.b)在main方法中:

  • 在两个WordGroups

到目前为止,我的代码是:

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,以及如何以所需的形式返回它们。p、 很抱歉wierd问题布局——如果不是代码格式,字符串在hashset之后会一直消失)


共有1个答案

高建本
2023-03-14

这里有一些基本的错误,在你继续前进之前,你需要解决。

让我们先看看这个方法。

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

现在,您还没有将quoteOne设置为任何值,至少在本课程中没有。您希望它是调用getWordArray()的返回值。因此,最好包括这一行

String[] quoteOne = getWordArray();

在这个方法的某个地方。

接下来,您将尝试重用一个变量名。这个类中已经有了单词,因此为了避免混淆,最好对循环中使用的字符串变量使用不同的名称。

现在,您正在尝试将字符串添加到word,而实际上您想将它们添加到set,因为set是从这个方法返回的东西。因此,除了用add更改行之外,您还需要用back更改行,以使所有内容都匹配。

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

实际上,有一些较短的方法可以将数组转换为哈希集,但我认为,如果您先使用这种方法,尝试将其正确化,这将是一个很好的练习。

现在我们来看下一种方法。

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()。但现在,你还需要一步。

在循环中迭代时,需要使用get方法查看HashMap,以查看是否已经在那里记录了特定的单词。如果是这样的话,你需要查看它记录了什么Integer,添加一个,然后把它放回地图中。如果没有,你可以不做任何算术就把东西放到地图上。

另外,请注意,向任何类型的映射添加内容的方法不是add,而是put,它需要两个参数——键和值。所以在你的逻辑中的某个时刻,你可能会有这样一条线

map.put(word, 1);

您可以在此调用中看到键和值。

最后,考虑一下返回语句。您要返回一个变量,而不是它的类型。你能猜出你将在那里使用哪个变量吗?

祝你顺利完成任务。我试着给你指出正确的方向,而不是为你做太多。

 类似资料:
  • 问题内容: 是否可以在Swift中将字符串的每个单词放入数组中? 例如: 至: 谢谢 :) 问题答案: 编辑/更新: Xcode 10.2•Swift 5或更高版本 我们可以使用集合拆分方法进行扩展 设置为true并通过闭包作为谓词。我们还可以利用new 属性来分割字符串。

  • 问题内容: 我当前正在从文本文件中读取200万行,如上一个问题中所述 。Java读取200万行文本文件的最快方法 现在,我将这些信息存储到HashMap中,并希望通过TreeMap对其进行排序,因为我想使用ceilingkey。以下方法正确吗? 问题答案: HashMap hashMap = new HashMap (); TreeMap treeMap = new TreeMap (); tre

  • 问题内容: 对于请求和JSON,我是一个菜鸟。在我的应用程序内部,我发送到服务器并取回东西,因此我可以使用它。我尝试查找不同的东西,但似乎并没有真正找到我想要的东西。所以我找回了似乎格式化为JSON的内容。我想知道如何将其放入NSMutable数组中。我获取此JSON的方法是使用AFNetworking的AFJSONRequestOperation。 我的回应看起来像这样。 问题答案: 如果您的J

  • 问题内容: 我建立了一个由Hashmap中定义的nameValue对组成的json对象 我遇到的问题是当我调用时: 它像这样添加nameValue对: 代替 有什么想法吗? 谢谢 问题答案: 遍历HashMap并放入jsonObject:

  • 我试图让多个消费者线程侦听一个生产者线程,直到生产者有东西要发布。我认为可以工作的代码在放入和取出共享类时“丢失”了锁。 在控制器类中,我启动运行Server server=new Server()的线程; consumer类将线程的详细信息放入映射中,如下所示: 共享类仅为: 服务器有以下run()方法: 输出如下: 从服务器类的输出int中,我可以看到,当我从映射中读取锁时,它现在的状态为“U

  • 我不确定如何开始这个,希望得到一些想法,可以帮助我。 我的代码示例: