这里使用什么集合

发布于 2024-10-20 11:25:04 字数 321 浏览 0 评论 0原文

我想知道我应该使用什么集合来实现此目的:

Requirements

  1. Must contains tuples
  2. 这些值之间没有关系(没有键值对) )
  3. 只能包含唯一的元组
  4. 等于

这里最好使用什么?

I'm wondering what collection I should use for this purpose:

Requirements

  1. Must contain tuples <value1,value2>
  2. There is not relation between those values (no key-value pairs)
  3. Can only contain unique tuples
  4. <value1,value2> is equal to <value2,value1>

What would be best to use here?

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

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

发布评论

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

评论(3

夏雨凉 2024-10-27 11:25:04

使用任何 Set(例如 HashSet)。创建一个对象来表示您的元组并正确实现 hashcode 和 equals。

Use any Set (HashSet, for instance). Create an object to represent your tuple and implement hashcode and equals properly.

随风而去 2024-10-27 11:25:04

使用 等于hashCode 如下所述,然后使用 设置

public class Tuple<T> {
    T v1;
    T v2;

    @override
    public boolean equals(Object o) {
        if (o == null) {
            return false;
        }
        if (o instanceof Tuple) {
            return (v1.equals(o.v1) && v2.equals(o.v2))
                   || (v1.equals(o.v2) && v2.equals(o.v1));
        }
        return false;
    }

    @override
    public int hashCode() {
        // must produce a.hashCode() == b.hashCode() if a.equals(b)
        // example below may or may not work for your concrete equals()
        return v1.hashCode() ^ v2.hashCode();
    }
}

Implement your own tuple class with equals and hashCode as outlined below, then use Set:

public class Tuple<T> {
    T v1;
    T v2;

    @override
    public boolean equals(Object o) {
        if (o == null) {
            return false;
        }
        if (o instanceof Tuple) {
            return (v1.equals(o.v1) && v2.equals(o.v2))
                   || (v1.equals(o.v2) && v2.equals(o.v1));
        }
        return false;
    }

    @override
    public int hashCode() {
        // must produce a.hashCode() == b.hashCode() if a.equals(b)
        // example below may or may not work for your concrete equals()
        return v1.hashCode() ^ v2.hashCode();
    }
}
画尸师 2024-10-27 11:25:04

Set 似乎满足您的条件。 Set 必须包含另一个集合或包含这两个值的自定义对象。

A Set appears to meet your criteria. The Set would have to contain another collection or a custom object that contains the two values.

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