【问题标题】:Create a set containing the words in a text [closed]创建一个包含文本中单词的集合[关闭]
【发布时间】:2011-07-20 10:11:41
【问题描述】:

我必须为 WebPageData 编写一个名为 getWordsInString() 的公共类方法。该方法接受一个名为 text 的参数,该参数应为 String 类型。 getWordsInString() 的目的是返回一个由 text 引用的字符串中的不同单词组成的集合。

首先使用您在 Javadoc 中为 String 类找到的方法,该方法将根据字符串参数的值将任何字符串分成多个部分。使用此方法将文本引用的字符串分解为单词数组,并将此数组分配给名为 wordArray 的局部变量。该方法应声明一个能够引用一组字符串的局部变量,并为其分配一个合适类的空实例。接下来遍历 wordArray 并将其元素添加到新创建的集合中,最后返回应该包含文本引用的字符串中的不同单词的集合。

import java.util.*;

public class WebPageData {

private Set<String> wordSet;
private Set<String> url;

public Set<String> getUrl() {
    return url;
}

public Set<String> getWordSet() {
    return wordSet;
}

public static String getWordsInString(text) {
    return test;



public String[] split(String regex) {

            private String[] wordArray;

for (String eachText : numSet) {
    hashSet.add(text);
    ) 
   }

我正在为这个问题苦苦挣扎,请帮忙?

【问题讨论】:

  • 具体是什么位?迭代看起来没问题,String.split 绝对是开始的地方。
  • 您需要更具体。你在苦苦挣扎的是什么?我们不是来给你写作业的。
  • 你知道如何将文本拆分成单词吗?如果没有,请查看“空白”(以及如何在正则表达式中执行)
  • 我正在努力编写 getWordsInString() 方法:(

标签: java string set


【解决方案1】:

您只需要一行即可完成所有操作:

Set<String> set = new HashSet<String>(Arrays.asList(text.split(" +")));

或者在 java 8 中:

Set<String> set = Arrays.stream(text.split(" +")).collect(Collectors.toSet());

【讨论】:

    【解决方案2】:

    您的代码中有很多语法错误:

    • WebPageData 类缺少右括号。
    • getWordsInString 方法缺少右括号。
    • 方法拆分缺少右大括号
    • wordArray 是一个局部变量,不应使用关键字 private。
    • “hashSet.add(text);”之后有一个右括号
    • hashSet 变量未声明。
    • 您的 split 方法声明它返回一个字符串数组,但 缺少退货声明。

    为了语法正确,您应该编写如下内容:

    import java.util.*;
    
    public class WebPageData {
    
        private Set<String> wordSet;
        private Set<String> url;
    
        public Set<String> getUrl() {
            return url;
        }
    
        public Set<String> getWordSet() {
            return wordSet;
        }
    
        public static String getWordsInString(text) {
            String[] wordArray;
            return test;
        }
    
        public String[] split(String regex) {
            String[] wordArray;
            Set<String> hashSet = new HashSet<String>();
    
            for (String eachText : numSet) {
                hashSet.add(text);
            }
            return null;
        }    
    }
    

    这在语法上是正确的,但不是你想要的。

    这是一个正确的 getWordsInString 方法:

    public Set<String> getWordsInString(String text) {
        String[] wordArray = text.split(" ");
        Set<String> set = new HashSet<String>();
        for (String currentWord : wordArray) {
          set.add(currentWord);
        }
        return set;
    }
    

    这可能是一种不那么冗长的方法(但这不是你必须做的):

    public Set<String> getWordsInString(String text) {
        List<String> words = Arrays.asList(text.split(" "));
        return new HashSet(words);
    }
    

    我更喜欢第二个版本,因为它集中了您想要的内容,将您的数组转换为集合。另一个进入迭代完整列表的细节。当性能是一个重要问题时,您会更喜欢第一个版本。

    【讨论】:

      【解决方案3】:
      public Set<String> getWordSet(String input) {
          String[] words = input.split(" ");
          Set wordSet=new Set();
          for(int i =0; i<words.length;i++){//length or size() :S im not sure
              wordSet.add(words[i]);
          }
      
          return wordSet;
      }
      

      我不测试它

      【讨论】:

        【解决方案4】:
        public Set<String> getWordSet(String input) {
            return new HashSet<String>(Arrays.asList(input.split(" ")));
        }
        

        这里创建(临时)列表会降低性能,但对于典型情况,这应该不是问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-07-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-01
          • 2018-09-10
          • 1970-01-01
          相关资源
          最近更新 更多