【问题标题】:Why there are still duplicated elements after I converted Array to HashSet [closed]为什么我将 Array 转换为 HashSet 后仍然有重复的元素 [关闭]
【发布时间】:2013-10-23 06:25:48
【问题描述】:

我有一个简单的数组:

String[] names = {"apple","apple","orange","orange"};
System.out.println("length is "+ names.length); //length is 4

我尝试在数组中创建一个不包含那些重复元素的集合,因为 Java 文档说 Set 是一个不包含重复元素的集合,所以我使用 Set 删除重复元素:

Set<String> nameSet = new HashSet<String>(Arrays.asList(names));
System.out.println("length is "+ nameSet.size()); //length is 4 still

但是nameSet 仍然包含重复元素,为什么我的 Set 没有唯一元素?

以及如何在不遍历数组的情况下解决我的问题?

【问题讨论】:

标签: java


【解决方案1】:

您必须运行不同的代码

String[] names = {"apple","apple","orange","orange"};
System.out.println("length is "+ names.length); //length is 4

Set<String> nameSet = new HashSet<String>(Arrays.asList(names));
System.out.println("length is "+ nameSet.size()); //length is 2

按预期打印。

length is 4
length is 2

【讨论】:

  • 如果您将 替换为您的自定义对象类,您将看到与我相同的结果
  • 为您自己的课程覆盖 .Equals.HashCode..
  • @Mellon 如果您使用的是自定义类,那么您已经编写了使用String 发布示例的示例是没用的。两者之间存在巨大差异。
  • 谢谢,我会为我的问题发一个新帖子。
  • 不,你不应该。您的问题将通过覆盖上述两种方法来解决,互联网上肯定充满了这样的例子。
猜你喜欢
  • 2022-01-16
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-25
  • 2020-01-27
  • 1970-01-01
相关资源
最近更新 更多