这里使用什么集合

时间:2011-03-03 19:53:31

标签: java collections

我想知道我应该为此目的使用什么样的集合:

要求

  1. 必须包含元组<value1,value2>
  2. 这些值之间没有关系(没有键值对)
  3. 只能包含唯一元组
  4. <value1,value2>等于<value2,value1>
  5. 这里最好用什么?

3 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:2)

使用equalshashCode实现您自己的元组课程,如下所述,然后使用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();
    }
}

答案 2 :(得分:1)

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

相关问题