首页 java基础 TREESET的一个例子

TREESET的一个例子

package com.yq1012.set; /*为了比较,让自己的类实现Comparable接口,按照自己想要的排序…

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;
    }
}

 

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

为您推荐

26个大小写字母对应的哈希值

26个大小写字母对应的哈希值

大写字母: 小写字母 A 对应的哈希值:65 B 对应的哈希值:66 C 对应的哈希值:67 D 对应的哈希值:68 E...
linux 把文件名字写入到txt

linux 把文件名字写入到txt

1、首先连接上linux主机,进入到需要处理的目录,例如“/”目录。   2、输入:ls -1 > 1....
git 流程开发

git 流程开发

前提条件:不能在 master 分支上修改任何文件。master 分支的变更只能通过 git pull 和 git me...
使用Git将本地文件提交到远程仓库

使用Git将本地文件提交到远程仓库

使用Git将本地文件提交到远程仓库 使用Git将本地文件提交到远程仓库 现在要将本地代码推到git远程仓库保存,可以提交...
将博客搬至CSDN

将博客搬至CSDN

将博客搬至CSDN
返回顶部