JDK源码阅读之Entry<K,V>

Entry<K,V>

接口Entry<K,V> 是Map<K,V>的内部接口,该接口是用来表示一个键值对的,一个这样的实例就包含K类型的键和V类型的值。包含获取Key、获取value以及设置value的方法,同时需要重写equals和hashCode方法。
该接口有四中方式获取比较器:
如果K类型或者V类型的父类包含K和V实现了Comparable接口,则可以通过下面方式获取比较器:

 public static <K extends Comparable<? super K>, V> Comparator<Map.Entry<K,V>> comparingByKey() {
            return (Comparator<Map.Entry<K, V>> & Serializable)
                (c1, c2) -> c1.getKey().compareTo(c2.getKey());
        }
 public static <K, V extends Comparable<? super V>> Comparator<Map.Entry<K,V>> comparingByValue() {
            return (Comparator<Map.Entry<K, V>> & Serializable)
                (c1, c2) -> c1.getValue().compareTo(c2.getValue());
        }

如果K类型或者V类型的父类包含K和V没有实现Comparable接口,则需要对齐父类构建自定义比较器(Comparator<? super K> cmp):

       
        public static <K, V> Comparator<Map.Entry<K, V>> comparingByKey(Comparator<? super K> cmp) {
            Objects.requireNonNull(cmp);
            return (Comparator<Map.Entry<K, V>> & Serializable)
                (c1, c2) -> cmp.compare(c1.getKey(), c2.getKey());
        }

      
        public static <K, V> Comparator<Map.Entry<K, V>> comparingByValue(Comparator<? super V> cmp) {
            Objects.requireNonNull(cmp);
            return (Comparator<Map.Entry<K, V>> & Serializable)
                (c1, c2) -> cmp.compare(c1.getValue(), c2.getValue());
        }
    }

通过这个例子我们也能够获取Comparator和Comparable的不同

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 9,775评论 0 16
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,504评论 11 349
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 5,433评论 0 3
  • 这几天,闲来无事的我看了几集新出的韩剧《灰姑娘与四骑士》,这两集看下来,惊得我出了一身的冷汗,好久不追剧的我真的不...
    尚巾林阅读 4,077评论 0 2
  • 每次开始写内心想法时都是非常的激动,语无伦次,不知道怎么形容。 每天睡觉都做梦梦到被分手,被抛弃,那种感觉非常强烈...
    榛子那个女孩阅读 2,607评论 0 0

友情链接更多精彩内容