TreeSet与排序 实践应用


题:
class MyData
{
private String province; // 省份 例如:河北
private String date; // 生产日期(yy-mm-dd) 例如: 1989-06-18
private int sno; // 同一批产品的流水号 例如:1325
....
}
上边的结构表示了某商品的若干信息

现在想把该商品对象添加到 TreeSet中,请你来解决重复判定问题。

源码TreeSetRepeat.java


import java.util.TreeSet;
import java.util.Set;

class myData implements Comparable<Object> {
    private String province;
    private String date;
    private int sno;
    public myData(String p, String d, int s) {
        this.province = p;
        this.date = d;
        this.sno = s;
    }
    public int compareTo(Object o) {
        if (o instanceof myData == false) {
            return 0;
        }
        myData m = (myData) o;
        int p = this.province.compareTo(m.province);
        if (p!=0) {
            return p;
        }
        int d = this.date.compareTo(m.date);
        if (d!=0) {
            return d;
        }
        return this.sno-m.sno;
    }
    
    public String toString() {
        return "("+province+","+date+","+sno+")";
    }
}

public class TreeSetRepeat {
    public static void main(String[] args){
        Set<myData> s = new TreeSet<myData>();
        s.add(new myData("Shanghai", "2014-05-22", 1429));
        s.add(new myData("Beijing", "2014-05-22", 1429));
        s.add(new myData("Shenzhen", "2014-05-21", 1429));
        s.add(new myData("Shenzhen", "2014-05-21", 1429));
        System.out.println(s);
        }
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注