树集重复
TreeSet Duplicates
我试图理解某人的代码。
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 种不同的颜色。
我们在这里使用树集。例如,如果我们输入此输入
a 1
b 2
c 2
b 4
d 2
输出是
a 1
b 2
c 2
d 2
在此 Set 如何识别 b 2 和 b 4 之间的区别?
如果我们使用 map 并使用 symbol 作为键那么它是可以理解的但是我们只是传递 Card 对象是如何找到相似性的?
您传递给 TreeSet
的构造函数的 MyComparator1
实例决定了哪些对象被认为是唯一的。在您的示例中,symbol
属性 决定了唯一性。
虽然同时使用 symbol
和 no
来确定唯一性会更有意义,因为两张具有相同符号但不同数字的牌不应被视为相同(例如 b 2
& b 4
不应被视为相同)。
我试图理解某人的代码。
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 种不同的颜色。
我们在这里使用树集。例如,如果我们输入此输入
a 1
b 2
c 2
b 4
d 2
输出是
a 1
b 2
c 2
d 2
在此 Set 如何识别 b 2 和 b 4 之间的区别? 如果我们使用 map 并使用 symbol 作为键那么它是可以理解的但是我们只是传递 Card 对象是如何找到相似性的?
您传递给 TreeSet
的构造函数的 MyComparator1
实例决定了哪些对象被认为是唯一的。在您的示例中,symbol
属性 决定了唯一性。
虽然同时使用 symbol
和 no
来确定唯一性会更有意义,因为两张具有相同符号但不同数字的牌不应被视为相同(例如 b 2
& b 4
不应被视为相同)。