程序员一代码搬运工
【Java学习心得和Java学习技术个人总结】

TREESET的一个例子

package com.yq1012.set;
/*为了比较,让自己的类实现Comparable接口,按照自己想要的排序方式重写compareTo 
 *Map只是提供了对键的排序,但是当我们需要对值排序时就的提供我们自己的比较器 这里 只是模拟了Map但是实际上并没有使用Map 
 
 */  
  
import java.util.Iterator;  
  
import java.util.Set;  
import java.util.TreeSet;  
  
public class SortByValue {  
  
    public static void main(String[] args) {  
        Set<Pair> set = new TreeSet<Pair>();  
        set.add(new Pair("me", "1000"));  
        set.add(new Pair("and", "4000"));  
        set.add(new Pair("you", "3000"));  
        set.add(new Pair("food", "10000"));  
        set.add(new Pair("hungry", "5000"));  
        set.add(new Pair("later", "6000"));  
        set.add(new Pair("myself", "1000"));  
        for (Iterator<Pair> i = set.iterator(); i.hasNext();)  
            // 我喜欢这个for语句  
            System.out.println(i.next());  
    }  
}  
  
class Pair implements Comparable<Object> {  
    private final String name;  
    private final int number;  
  
    public Pair(String name, int number) {  
        this.name = name;  
        this.number = number;  
    }  
  
    public Pair(String name, String number) throws NumberFormatException {  
        this.name = name;  
        this.number = Integer.parseInt(number);  
    }  
  
    public int compareTo(Object o) {  
        if (o instanceof Pair) {  
            // int cmp = Double.compare(number, ((Pair) o).number);  
            int cmp = number - ((Pair) o).number;  
            if (cmp != 0) {// number是第一要比较的,相当于先比较value。如果相同再比较键  
                return cmp;  
            }  
            return name.compareTo(((Pair) o).name);  
        }  
        throw new ClassCastException("Cannot compare Pair with "  
                + o.getClass().getName());  
    }  
  
    public String toString() {  
        return name + ' ' + number;  
    }  
}

 

赞(0)
未经允许不得转载:程序员一代码搬运工 » TREESET的一个例子
分享到: 更多 (0)