gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 13:51:57 25 4
gpt4 key购买 nike

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

1.a) 创建 getWordSet() WordGroup中的方法其中:

  • 再拿一个WordGroup对象作为参数
  • 创建a HashSet<String>
  • 使用两个for循环来放置此和参数WordGroup中的所有单词进入HashSet
  • 返回HashSet<String>

1.b)main 中方法:

  • 使用 getWordSet()使用两种方法 WordGroup s
  • 迭代或循环 HashSet返回并打印其中的单词

2.a)WordGroup 中创建一个方法叫getWordCounts()其中:

  • 创建 HashMap<String, Integer>
  • 循环 getWordArray() 返回的所有单词并将每个单词放入 HashMap以及发生的次数
  • 返回HashMap<String, Integer>

2.b)main 中方法:

  • 调用 getWordCounts()就两个WordGroup s
  • 使用keySet()检索键集(映射的字符串部分)
  • 循环这个集合并打印出单词及其计数 WordGroup s
  • 使用 getWordSet()制作 WordGroup 中所有单词的完整集合的方法s
  • 循环新的HashSet打印所有单词的完整列表,以及每个 HashMap 的总计数s

到目前为止我的代码:

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

}

我已经走到这一步了,但现在我陷入了困境。我不知道如何将数组中的单词放入哈希集和 HashMap 中,以及如何以所需的形式返回它们。附注对于奇怪的问题布局感到抱歉 - 如果不是代码格式,则字符串在哈希集之后会不断消失)

最佳答案

这里有一些基本错误,您需要先解决这些错误,然后才能继续。

我们先看一下这个方法。

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

当您迭代循环时,您需要使用 get 方法查看 HashMap,以查看特定单词是否已记录在其中。如果是这样,您需要查看已记录的Integer,添加一个,然后将其放回 map 中。如果没有,您可以将一些内容放入 map 中,而不进行任何算术。

另外,请注意,向任何类型的 map 添加内容的方法不是 add,而是 put,并且它需要两个参数 - key 和值(value)。所以在你的逻辑中的某个时刻,你可能会有这样一行:

map.put(word, 1);

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

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

祝您顺利完成作业。我试图为您指明正确的方向,但又不会为您做太多的事情。

关于java - 将数组中的单词放入 HashMap 和 HashSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19896467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com