当前位置: 首页 > news >正文

在线网页制作系统小彬网站内链seo

在线网页制作系统小彬,网站内链seo,上海都有哪些企业公司,西双版纳傣族自治州医院问题引出 起初#xff0c;写了一行排序代码#xff0c;空指针异常。有判空思想但对nullsLast理解是错误的#xff0c;于是阅读了一下相关源码。 result.sort(Comparator.nullsLast(Comparator.comparing(StationPointDataZoneVO::getDv)));以下写法是正确的#xff1a; …问题引出 起初写了一行排序代码空指针异常。有判空思想但对nullsLast理解是错误的于是阅读了一下相关源码。 result.sort(Comparator.nullsLast(Comparator.comparing(StationPointDataZoneVO::getDv)));以下写法是正确的 result.sort(Comparator.comparing(StationPointDataZoneVO::getDv, Comparator.nullsFirst(Comparator.comparing(Function.identity()))).reversed());接下来以Comparator 接口为引探究一下比较器各个方法的正确用法。 Comparator.comparing 有两个核心方法 public static T, U ComparatorT comparing(Function? super T, ? extends U keyExtractor,Comparator? super U keyComparator) {Objects.requireNonNull(keyExtractor);Objects.requireNonNull(keyComparator);return (ComparatorT Serializable)(c1, c2) - keyComparator.compare(keyExtractor.apply(c1),keyExtractor.apply(c2)); }public static T, U extends Comparable? super U ComparatorT comparing(Function? super T, ? extends U keyExtractor) {Objects.requireNonNull(keyExtractor);return (ComparatorT Serializable)(c1, c2) - keyExtractor.apply(c1).compareTo(keyExtractor.apply(c2)); }先说下面一个传入一个取值函数一般情况是以某字段为依据给对象排序如 StationPointDataZoneVO::getDv。比较自身 Function.identity() 即可。返回一个Comparator接口的具体实现需要注意的是比较器最终调用的方法是实现了Comparable接口的某个对象的compareTo方法。 第一个方法传入两个参数一个取值函数一个比较器。最终调用比较器的compare方法。 以下写法效果一样同样使用某对象自己实现的compareTo方法。 result.sort(Comparator.comparing(StationPointDataZoneVO::getDv)); result.sort(Comparator.comparing(StationPointDataZoneVO::getDv, Comparator.comparing(Function.identity()))); result.sort(Comparator.comparing(StationPointDataZoneVO::getDv, Comparator.naturalOrder()));Comparator.thenComparing thenComparing有好几个方法本质都调用的这个。 default ComparatorT thenComparing(Comparator? super T other) {Objects.requireNonNull(other);return (ComparatorT Serializable) (c1, c2) - {int res compare(c1, c2);return (res ! 0) ? res : other.compare(c1, c2);}; }不难看懂就是上一个比较器结果相等时调用下一个比较器可以嵌套很多层。 Comparator.naturalOrder nullsFirst nullsLast 这三个有一个共同特点返回 Comparators类中的某个比较器实例。 NaturalOrderComparator enum NaturalOrderComparator implements ComparatorComparableObject {INSTANCE;Overridepublic int compare(ComparableObject c1, ComparableObject c2) {return c1.compareTo(c2);}Overridepublic ComparatorComparableObject reversed() {return Comparator.reverseOrder();}}NullComparator 构造器和核心方法 NullComparator(boolean nullFirst, Comparator? super T real) {this.nullFirst nullFirst;this.real (ComparatorT) real; }Override public int compare(T a, T b) {if (a null) {return (b null) ? 0 : (nullFirst ? -1 : 1);} else if (b null) {return nullFirst ? 1: -1;} else {return (real null) ? 0 : real.compare(a, b);} }回到开篇的问题为何会报空指针就不难理解 进入到NullComparator的compare后a和b其实是StationPointDataZoneVO对象它确实不为null。于是调用传入的比较器的compare方法最终调用到的是 (StationPointDataZoneVO::getDv).compareTo(StationPointDataZoneVO::getDv). dv取值为null于是空指针。 Comparator.reversed reverseOrder 此时牵扯进来了另一个类Collections。 reversed 和reverseOrder分别返回Collections定义的ReverseComparator2比较器和ReverseComparator比较器。 这两个比较器的区别是前者用传入的比较器做翻转比较即compare方法参数翻转 public int compare(T t1, T t2) {return cmp.compare(t2, t1); }后者直接翻转调用compareTo public int compare(ComparableObject c1, ComparableObject c2) {return c2.compareTo(c1); }Comparators 此类用于支持Comparator接口提供两个比较器NaturalOrderComparatorNullComparator Collections 也提供了两个比较器ReverseComparatorReverseComparator2
http://www.sadfv.cn/news/420563/

相关文章:

  • 威廉网站建设免费asp网站源码下载
  • 网站首页制作公司郑州做网站哪家好熊掌号
  • 漯河做网站xknt桂林红豆网论坛
  • 怎样查网站备案人的联系方式简单制作网页
  • 丹徒网站建设策划凡科快图在线抠图
  • 免费做网站公司众创空间网站建设
  • 大连网站代运营的公司有哪些好看的企业官网
  • 网站收录系统物流网站的建设论文
  • 网站做淘宝客赚钱吗vs2005做的网站转换为2012
  • 空间放两个网站谷歌关键词排名查询工具
  • 淄博网站建设服务商上海医院网站建设
  • 观山湖制作网站云设计
  • 360提交网站企业开办网站
  • dw网站制作流程wordpress主题数据库
  • 网站推广该怎么做洪梅东莞网站建设
  • 网站建设 好公司wordpress 只能做博客
  • 网站开发项目总结范文企业网站导航设计
  • 微信分销网站建设官网创新的盐城网站开发
  • 有没有专门做家纺的网站手机版网站的优势
  • 团队拓展活动长沙seo网站建设
  • 淮安 网站建设安做省民改厅网站
  • 汕头站扩建有连接华东线吗网站建设客户怎么找
  • 网站有几种南宁会制作网站的技术人员
  • 佛山新网站建设报价wordpress api地址
  • 宠物网站建设的可行性展厅设计公司推荐
  • 襄阳地区网站做的好的南通seo招聘
  • 高端的金融行业网站开发中国万网域名注册
  • 东莞品牌设计公司济南做网站优化
  • 网站系统设计目标丽水网站建设公司
  • 公司注册一站式wordpress3.8.3