集合集中的唯一集合

时间:2012-09-02 08:59:38

标签: java algorithm collections set

我确实有int对,即; (int,int)

  

1)给出k对这样的对,检查它们是否是唯一的。即;使用k对形成的集合的大小是k?
  2)如果给定的k记录是唯一的,则按排序顺序存储它们(按x并用y解决冲突)
  3)给定n个这样的大小为k的集合,创建一组集合。

要求1和2的示例
如果k = 3

  

(100,100)(110,300)(120,200)是有效集并按排序顺序   (100,100)(300,200)(200,300)是有效集,但不是按排序顺序   (100,100)(100,200)(100,200)处于有效集合

要求3的例子 输入:

  

(100,100)(200,300)(300,200)
  (100,100)(200,300)(300,200)
  (100,100)(201,300)(300,200)

输出:

  

(100,100)(200,300)(300,200)
  (100,100)(201,300)(300,200)

这是我所面临的真正问题的最接近的类比。我需要在Java中完成这项工作,而且我从未在Java中工作过。我是一名中级c ++程序员。

我可以通过一些丑陋的编码和排序来解决1和2 但是我无法得到3.下面是我到目前为止可以获得的3.该类对实现了可比较的

(poc代码)

import java.util.HashSet;
public class set {
    public static void main (String []args) {
        HashSet<Pair> s1 = new HashSet();
        s1.add(new Pair(10,10));
        s1.add(new Pair(10,10));

        HashSet<Pair> s2 = new HashSet();
        s2.add(new Pair(10,10));
        s2.add(new Pair(10,10));

        HashSet<HashSet<Pair>> s12 = new HashSet();
        s12.add(s1);s12.add(s2);
        for ( HashSet<Pair> hs : s12) {
            for (Pair p :  hs) {
                System.out.println(""+ p.toString());
            }
        }
    }
}

1 个答案:

答案 0 :(得分:2)

您似乎没有覆盖Pair类中的equals和/或hashCode方法。

例如,如果您的Pair类具有以下结构:

protected K value1;
protected V value2; 

您应该将[{1}}和equals实施为(示例):

hashCode