List的实现既是Set a List(序列)?

发布于 2024-09-27 05:06:42 字数 205 浏览 1 评论 0原文

我正在扩展 LinkedList 并实现 Set,这样我就有了一个没有重复项的列表。我想知道这样的实现是否还不存在?

我计划做的就是重写 add(e) 方法来首先查找该元素,如果存在,则不添加它。像这样的东西:

add(E){
   if(get(E) == null) super.add(E);
}

I'm in the position of extending LinkedList and implement Set, so that I have a list with no duplicates. I'm wondering if such an implementation doesn't exist already?

All I'm planning to do is to override the add(e) method to first look-up the element, and if present don't add it. Something like:

add(E){
   if(get(E) == null) super.add(E);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

蓝色星空 2024-10-04 05:06:42

标准集合中不存在 Java 实现。

但是,您可以从以下位置查看 SetUniqueList 常见集合可能符合您正在寻找的内容。

No Java implementation exists in the standard collections.

However, you can take a look at SetUniqueList from the Common Collections which may be along the lines of what you are looking for.

记忆で 2024-10-04 05:06:42

也许 LinkedHashSet 可以满足您的需求。它使元素保持(默认)插入顺序。

不可能同时实现两个接口(至少如果您想遵循 List 和 Set 的规范),因为 hashCode 定义存在冲突。

返回此列表的哈希码值。列表的哈希码定义为以下计算的结果:

hashCode = 1;
  Iterator i = list.iterator();
  while (i.hasNext()) {
      Object obj = i.next();
      hashCode = 31*hashCode + (obj==null ? 0 : obj.hashCode());
  }

返回该集合的哈希码值。集合的哈希码定义为集合中元素的哈希码之和,其中空元素的哈希码定义为零。这确保了 s1.equals(s2) 意味着对于任何两个集合 s1 和 s2 来说 s1.hashCode()==s2.hashCode(),正如 Object.hashCode 方法的一般契约所要求的。

Maybe LinkedHashSet does what you want. It keeps elements in (by default) insertion order.

It is not possible to implement both interfaces at the same time (at least if you want to follow the specifications for List and Set), because the hashCode definitions conflict.

Returns the hash code value for this list. The hash code of a list is defined to be the result of the following calculation:

hashCode = 1;
  Iterator i = list.iterator();
  while (i.hasNext()) {
      Object obj = i.next();
      hashCode = 31*hashCode + (obj==null ? 0 : obj.hashCode());
  }

versus

Returns the hash code value for this set. The hash code of a set is defined to be the sum of the hash codes of the elements in the set, where the hashcode of a null element is defined to be zero. This ensures that s1.equals(s2) implies that s1.hashCode()==s2.hashCode() for any two sets s1 and s2, as required by the general contract of the Object.hashCode method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文