TreeSet重复

时间:2017-05-01 06:32:01

标签: java collections set treeset

我试图了解某人的代码。

public class Card  {
    String symbol;
    int no;

    public String getSymbol() {
        return symbol;
    }

    public void setSymbol(String symbol) {
        this.symbol = symbol;
    }
    public int getNo() {
        return no;
    }
    public void setNo(int no) {
        this.no = no;
    }

    public String toString(){
        return symbol+" "+no;
    }

}
class MyComparator1 implements Comparator<Card> {

    @Override
    public int compare(Card arg0, Card arg1) {

        return arg0.getSymbol().compareTo(arg1.getSymbol());
    }

}

public class Card2 {
public static void main(String[] args) {
    Card c2;        
    Scanner s = new Scanner(System.in);
    Set<Card> c = new TreeSet<Card>(new MyComparator1());
    while(c.size()<4) {
        System.out.println("Enter symbol and number");
        String symbol = s.next();
        int no = s.nextInt();
        c2 = new Card();
        c2.setSymbol(symbol);
        c2.setNo(no);
        c.add(c2);
    }
    Iterator<Card> it = c.iterator();
    {
        while (it.hasNext()) {
            Card c1 = it.next();
            System.out.println(c1.toString());
        }
    }
}
}

在此我们试图用相应的数字显示不同的颜色 直到我们得到4种不同的颜色。

我们在这里使用treeset。输入此输入的示例

a 1
b 2
c 2
b 4
d 2

输出

a 1
b 2
c 2
d 2

在这个如何设置识别b 2&amp;之间的差异b 4? 如果我们拿地图并使用符号作为关键,那么它是否可以站立但是如何设置找到相似性我们只是通过卡片对象?

1 个答案:

答案 0 :(得分:1)

您传递给MyComparator1构造函数的TreeSet实例确定哪些对象被视为唯一。在您的示例中,它是确定唯一性的symbol属性。

虽然同时使用symbolno来确定唯一性会更有意义,因为具有相同符号但不同数字的两张卡不应被视为相同(例如{{ 1}}&amp; b 2不应该被认为是相同的。)