关于有序集合TreeSet(每天学一点Day20191112)

TreeSet是有序的集合,继承自AbstractSet
TreeSet继承图
TreeSet泛型类,需要实现comparable接口中的CompareTo方法,即可进行相关排序。
实现CompareTo方法时要注意,因为TreeSet的add方法不重复,返回为0的时候,add添加不进去(返回为1或者-1的时候,颠倒顺序可用于倒序、正序的调整),例如:

    @Override
    public int compareTo(TopWeb o) {
        if (this.pv < o.pv)
        {
            return 0;
        }
        return -1;
    }

这个时候当两个TopWeb对应的对象,假如此次填入this.pv=8000,而对比TreeSet集合中已经存在的o.pv为10000,进行比较此次填入的值返回为0,此处就会判断为this将要添加的对象和对比对象相等(跟判断hashCode相等类似,此处add添加的时候仅通过comparable进行判断,不在判断hashcode),所以add添加不进去,TreeSet集合中的数据不变。

练习:根据对象的pv(流量)大小排序,同时打印出流量最靠前的两个网站

import lombok.Data;

import java.util.*;

public class ForTest {
    public static void main(String[] args) {
        TopWeb tw = new TopWeb("www.shukw.com", 89551);
        TopWeb tw1 = new TopWeb("m.199zw.com", 2782);
        TopWeb tw2 = new TopWeb("www.qu.la", 42665);
        TopWeb tw3 = new TopWeb("m.bqg5200.com", 140740);
        TreeSet<TopWeb> set = new TreeSet<>();
        set.add(tw);
        set.add(tw1);
        set.add(tw2);
        set.add(tw3);

        Iterator<TopWeb> it = set.iterator();
        int index = 0;
        while (it.hasNext() && index < 2)
        {
            System.out.println(it.next());
            index++;
        }

    }
}

@Data class TopWeb implements Comparable<TopWeb> {

    private String url;

    private int    pv;

    public TopWeb(String url, int pv) {
        this.url = url;
        this.pv = pv;
    }

    @Override public int compareTo(TopWeb o) {
        if (this.pv < o.pv) {
            return 1;
        } else if (this.pv == o.pv) {
            return 0;
        }

        return -1;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值