【问题标题】:Java: Why does my HashSet and TreeSet contain duplicates?Java:为什么我的 HashSet 和 TreeSet 包含重复项?
【发布时间】:2016-03-11 00:23:00
【问题描述】:

当我的文本文件包含以下内容时:

a b c b

我的 HashSet 和 TreeSet 说有 3 个唯一词。

当我的文本文件包含以下内容时:

a b c a

我的 HashSet 和 TreeSet 说有 4 个唯一词。

为什么?

  public static int countUnique1A(WordStream words) {

    HashSet<String> hashSetA = new HashSet<String>();
    for (String i : words) {
      hashSetA.add(i);
    }

    return hashSetA.size();
  }

  public static int countUnique1B(WordStream words) {

    TreeSet<String> treeSetA = new TreeSet<String>();
    for (String i : words) {
      treeSetA.add(i);
    }
    return treeSetA.size();
  }

【问题讨论】:

  • 在调用size() 之前,treeSetAhashSetA 中有什么内容?你如何构造WordStream & 什么是WordStream
  • 它不包含重复项。它不能。弦不一样。尝试打印出集合中的所有内容,您会看到。如果将输出括在括号中,它将清楚地显示字符串的开始和结束位置,例如System.out.println(String.format("[%s]", word));
  • 错误在WordStream,而不是您在此处显示的代码。删除此代码,并将您的问题重新集中在WordStream

标签: java unique hashset treeset


【解决方案1】:

我猜这可能是由于单词之间的空格。例如。 HashSet 可能包含“a”和“a”。你可以尝试改变吗:

hashSetA.add(i);

hashSetA.add(i.trim());

我们也需要为treeSetA 做同样的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-29
    • 2012-08-18
    • 2018-10-02
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多