文档章节

修改 TreeSet/TreeMap 默认排序规则注意!!

昏鸦
 昏鸦
发布于 2017/04/11 17:26
字数 150
阅读 24
收藏 0

treeMap 基于红黑树实现,treeSet基于treeMap实现,

当我们修改默认的排序规则时候,必须有0的返回,否则可能删除不掉元素

public class TreeSet01 {
    public static void main(String[] args) {
        TreeSet<Integer> kminset = new TreeSet<Integer>();
        kminset.add(1);
        kminset.add(2);
        kminset.remove(kminset.first().intValue());
        System.out.println("kminset size = [" + kminset.size() + "]"); // 1

        TreeSet<Integer> kminset0 = new TreeSet<Integer>(new MyComparator());
        kminset0.add(1);
        kminset0.add(2);
       kminset0.remove(kminset0.first().intValue());
        System.out.println("kminset0 size = [" + kminset0.size() + "]"); //2
    }
    //必须有 0, >0, <0 三个值得返回
    static class MyComparator implements Comparator<Integer> {
        public int compare(Integer f1,Integer f2) {
            if(f1.intValue()== f2.intValue()){
                return 0;
            }
            if (f1.intValue()> f2.intValue())
            {
                return 1;
            }
            return -1;
        }
    }
}

© 著作权归作者所有

昏鸦
粉丝 7
博文 192
码字总数 61642
作品 0
程序员
私信 提问
java如何对ArrayList中对象按照该对象某属性排序

有几个方法可以实现:让 Student 实现Comparable接口,或是实例化一个比较器,现在用 Comparator 比较器实例来做一个: 2.添加 Comparable 接口,重写 compareTo 方法。然后你可以用 TreeSe...

文文1
2016/06/19
639
0
Java集合容器系列09 - TreeSet

一、TreeSet介绍 TreeMap是底层基于TreeMap的NavigableSet实现,容器的元素存储在TreeMap键值对映射的key中,它使用元素的自然顺序或者传入的比较器Comparator对元素进行排序。它为基本操作例...

老韭菜
2018/08/28
0
0
【JAVA】集合框架 学习笔记

以下是我学习java集合框架的笔记,内容主要是个人理解和网络视频、文章的摘录。 首先说一下什么是java集合框架,相信初学者刚开始听这个的时候,对于这个东西的概念是很模糊的。下面我用通俗...

qq_37792173
2017/09/11
0
0
集合(三):Set

一:java.util.Set(interface)  Set是一种不包含重复的元素的Collection,即任意的两个元素e1和e2都有e1.equals(e2)=false,Set最多有一个null元素。 接下来将简单介绍Set下的几个实现类,...

牧羊人Berg
2016/06/08
35
0
TreeSet和TreeMap初始化时有无比较器的测试

1、二者默认按照升序排序:TreeSet按照存储元素升序排序;TreeMap按照key升序排序。 2、要想自定义TreeSet和TreeMap中元素的排序,可以在其初始化时,指定比较器即可。 3、测试code: packag...

caoxiaohong1005
2017/11/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

centos7 新手阿里云服务器安装mongodb

简介 MongoDB 是一个基于分布式 文件存储的NoSQL数据库 由C++语言编写,运行稳定,性能高 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案 MongoDB特点 模式自由 :可以把不同结构的文档存...

醉雨
22分钟前
1
0
sql注入漏洞,应屏蔽SQL注入攻击

注:SQL注入好比是前端URL传参数请求时参数以SQL 做为参数传入,如 select 1 from dual where 1=1 or 1=1 and 1=2;(类似这样的SQL语句) 防御方法 如果自己编写防注代码,一般是先定义一个函...

颜丽
22分钟前
2
0
装饰者模式

 代理模式与装饰者模式看起来很像,都实现基础对象实现的接口,在其自身对象中都保存着对被代理/被装饰者的对象引用。   先来看看装饰者模式的定义:动态的将责任附加到被装饰者对象上,用...

铁骨铮铮
26分钟前
0
0
我为什么飞行 10000 公里去西班牙参加 KubeCon?

2019 年 5 月 20 日至 23 日, 由 Cloud Native Computing Foundation (CNCF) 主办的云原生技术大会 KubeCon + CloudNativeCon EU(欧洲场)即将在热情洋溢的巴塞罗那盛装启幕。 作为云计算领...

zhaowei121
44分钟前
1
0
Node.getTextContent() not found 解决办法【不需要调整builder path下面包顺序】

新导入的工程,w3c的getTextContent找不到,response的setCharacterEncoding找不到,网上很多教程都是“调整工程builder path的lib包顺序把jre、tomcat调到上面即可”,但是进入项目的build...

嘿嘿嘿IT
51分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部