0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用LocalDate和LocalDateTime

Android编程精选 来源:Android编程精选 作者:Android编程精选 2022-07-04 11:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

史蒂夫.乔布斯说,”复杂的终极境界是简单“,同样的优雅的代码一定是精简明了,可读性好。

使用LocalDate和LocalDateTime

LocalDate精确到日期,LocalDateTime精确到时分秒。优化前14行代码


	
  1. try {

  2. SimpleDateFormat sdfDay = new SimpleDateFormat("yyyy-MM-dd");

  3. SimpleDateFormat sdfMins = new SimpleDateFormat("yyyy-MM-dd HHss");

  4. Date now = new Date();

  5. String today = sdfDay.format(now);

  6. String waterStart = today + " 0300";

  7. String waterEnd = today + " 0400";

  8. Date waterStartTime = sdfMins.parse(waterStart);

  9. Date waterEndTime = sdfMins.parse(waterEnd);

  10. } catch (ParseException pe) {

  11. return XX;

  12. }

优化后3行代码


	
  1. LocalDateTime now = LocalDateTime.now();

  2. LocalDateTime waterStart = LocalDateTime.of(now.getYear(), now.getMonth(),now.getDayOfMonth(),3,0);

  3. LocalDateTime waterEndTime =LocalDateTime.of(now.getYear(), now.getMonth(),now.getDayOfMonth(),4,0);

默认值使用Optional

优化前五行


	
  1. if (null == status) {

  2. param.put("status", new ArrayList<String>());

  3. } else {

  4. param.put("status", status);

  5. }

优化后一行,使用JDK8的Optional


	
  1. Optional.ofNullable(status).orElse(new ArrayList<String>());

如果是字符串可以用


	
  1. StringUtils.defaultIfEmpty(status,"")

字符串累加

字符串只要不在for循环里累加,可以直接用+号,因为编译成字节码后会变成StringBuilder,如果在for循环里面用+号会生成多个StringBuilder,所以在for循环里累加最好在循环外创建StringBuilder。优化前五行


	
  1. StringBuffer sblog = new StringBuffer();

  2. sblog.append("waterDriven|sellerId=");

  3. sblog.append(request.getSellerTaobaoId());

  4. sblog.append("|result=");

  5. sblog.append(isSuccess);

优化后一行


	
  1. String sblog="waterDriven|sellerId="+request.getSellerTaobaoId()+"|result="+isSuccess;

以上场景用逗号和等号连接数据,使用GUAVA的Joiner更精简,可读性更好


	
  1. String sblog=Joiner.on("|").withKeyValueSeparator("=").join(ImmutableMap.of("sellerId", request.getSellerTaobaoId(), "result", isSuccess))

LIST TO MAP

优化前4行


	
  1. Map<String, String> AssetsMetaIdMap = Maps.newHashMap();

  2. for (AssetsInfoBO assetsInfoBO : request.getAssetsCollectionList()) {

  3. AssetsMetaIdMap.put(assetsInfoBO.getAssetMetadataId(), assetsInfoBO.getAssetMetadataId());

  4. }

优化后1行


	
  1. Map<String, String> AssetsMetaIdMap = request.getAssetsCollectionList().stream().collect(Collectors.toMap(Hosting::getAssetMetadataId, Hosting::getAssetMetadataId));

如果key重复会抛出异常


	
  1. Exception in thread "main" java.lang.IllegalStateException: Duplicate key 80000

减少不需要的判断

优化前5行


	
  1. String requestId = null;

  2. if (null != request.getExtData()) {

  3. requestId = request.getExtDataValue(REQUEST_ID_KEY);

  4. }

  5. return requestId;

优化后1行


	
  1. return request.getExtDataValue(REQUEST_ID_KEY);

去掉else

优化前5行


	
  1. if (null != result && StringUtils.isNotBlank(no)) {

  2. return no;

  3. } else {

  4. throw new RuntimeException("XX");

  5. }

优化后4行


	
  1. if (null != result && StringUtils.isNotBlank(no)) {

  2. return no;

  3. }

  4. throw new RuntimeException("XX");

不要返回布尔

优化前5行


	
  1. if ("true".equalsIgnoreCase(value.toString())) {

  2. invoke = true;

  3. } else {

  4. invoke = false;

  5. }

优化后一行


	
  1. invoke = "true".equalsIgnoreCase(value.toString());

使用级联

优化前5行


	
  1. ParamBO paramBO = new ParamBO();

  2. paramBO.setId(1);

  3. paramBO.setName(”ifeve“);

  4. paramBO.setOld(7);

优化后1行


	
  1. new ParamBO().withId(1).withName("ifeve").withOld(7);

-End-

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4947

    浏览量

    73216
  • LOCA
    +关注

    关注

    0

    文章

    11

    浏览量

    7273

原文标题:几个代码瘦身优化的案例

文章出处:【微信号:AndroidPush,微信公众号:Android编程精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    具有 ±15kV IEC ESD 保护功能的 TRSF3243E 多通道 RS - 232 兼容线路驱动器和接收器

    具有 ±15kV IEC ESD 保护功能的 TRSF3243E 多通道 RS - 232 兼容线路驱动器和接收器 一、引言 在电子设备的串行通信领域,RS - 232 接口依然是一种广泛应用的标准。然而,静电放电(ESD)等问题常常会对接口的稳定性和可靠性造成威胁。德州仪器(TI)推出的 TRSF3243E 多通道 RS - 232 兼容线路驱动器和接收器,凭借其出色的 ESD 保护功能和丰富的特性,为串行通信设计提供了一个可靠的解决方案。 文件下载: trsf3243e.pdf 二、TRSF3243E 特性亮点 2.1 强大的 ESD 保护 T
    的头像 发表于 12-16 17:20 0次阅读

    汽车CAN FD系统基础芯片TCAN1167-Q1:特性、应用与设计要点

    汽车CAN FD系统基础芯片TCAN1167-Q1:特性、应用与设计要点 在汽车电子领域,高速控制器局域网(CAN)系统基础芯片(SBC)扮演着至关重要的角色。今天,我们就来深入探讨德州仪器(TI)推出的TCAN1167-Q1这款产品,它具有LDO输出、睡眠模式和看门狗等功能,为汽车CAN FD网络提供了强大而可靠的解决方案。 文件下载: tcan1167-q1.pdf 一、产品概述 TCAN1167-Q1是一款符合AEC Q100(1级)标准的高速CAN SBC,满足ISO 11898-2:2016高速CAN规范的物理层要求。它支持传统CAN和
    的头像 发表于 12-16 17:15 8次阅读

    中航光电荣获汇川技术2025年度联合创新奖

    12月13日,以“数驱质领 聚势全球 共创未来”为主题的汇川技术2025年供应商大会在苏州隆重召开。中航光电受邀出席本次盛会,并凭借在连接技术领域的持续创新能力与突出的合作贡献,荣获“联合创新奖”。这一荣誉不仅是汇川技术对中航光电创新实力与合作价值的高度认可,更标志着双方伙伴关系从“同舟共济”迈向“创新引领”的全新跨越。
    的头像 发表于 12-16 17:14 8次阅读

    中航光电高速Cable Tray组件产品简介

    海量数据的实时传输需求,对信息通信系统的带宽、速率和稳定性提出了前所未有的严苛要求。长期以来,PCB一直是电子设备内部信号传输的主要载体,但在高频高速传输场景下,其性能损耗的局限性愈发明显。采用新型材料或增加PCB层数来优化损耗问题,会导致成本大幅攀升,且难以从根本上解决问题。
    的头像 发表于 12-16 17:12 8次阅读

    中航光电斩获2025全国质量信得过班组荣誉称号

    近日,2025中国质量协会年会暨第三届追求卓越大会在北京召开。中航光电同轴差分班组凭借在质量管理、技术创新、团队协作等方面的突出表现,斩获“全国质量信得过班组”荣誉称号,并作为河南省质量协会班组建设代表受邀在本次盛会上作分享交流。
    的头像 发表于 12-16 17:10 10次阅读

    汽车CAN FD系统基础芯片TCAN1164-Q1:特性、应用与设计要点

    汽车CAN FD系统基础芯片TCAN1164-Q1:特性、应用与设计要点 在汽车电子领域,随着高级驾驶辅助系统(ADAS)、汽车信息娱乐系统等的不断发展,对高速、可靠的通信技术需求日益增长。CAN FD(Controller Area Network with Flexible Data Rate)作为一种重要的汽车通信协议,能够满足汽车电子系统对数据传输速率和可靠性的要求。而TCAN1164-Q1作为一款符合AEC Q100标准的汽车CAN FD系统基础芯片(SBC),为汽车电子设计提供了强大的支持。本文将详细介绍TCAN1164-Q1的特性、应
    的头像 发表于 12-16 17:10 15次阅读

    TCAN1162x-Q1:汽车CAN FD系统基础芯片的卓越之选

    TCAN1162x-Q1:汽车CAN FD系统基础芯片的卓越之选 在汽车电子领域,CAN FD(Controller Area Network with Flexible Data Rate)技术凭借其高速数据传输和灵活的数据长度,在高级驾驶辅助系统(ADAS)、车身电子装置和照明、汽车信息娱乐系统和仪表组以及混合动力、电动和动力总成系统等应用中得到了广泛应用。而德州仪器(TI)的TCAN1162x-Q1系列CAN FD系统基础芯片(SBC),无疑是其中的佼佼者。今天,我们就来深入了解一下这款芯片的特性、应用以及设计要点。 文件下
    的头像 发表于 12-16 17:10 14次阅读

    探索TCAN1162x-Q1:汽车CAN FD系统基础芯片的卓越之选

    探索TCAN1162x-Q1:汽车CAN FD系统基础芯片的卓越之选 在现代汽车电子系统中,CAN(Controller Area Network)总线作为一种可靠的通信协议,被广泛应用于各种电子控制单元(ECU)之间的通信。而TCAN1162x-Q1作为一款高速CAN系统基础芯片(SBC),凭借其出色的性能和丰富的特性,成为了汽车电子工程师的理想选择。今天,我们就来深入了解一下这款芯片。 文件下载: tcan11623-q1.pdf 特性亮点,铸就卓越性能 标准合规与功能安全 TCAN1162x-Q1符合面向汽车应用的AEC Q100(
    的头像 发表于 12-16 17:10 16次阅读

    探秘TCAN1162-Q1:汽车CAN FD收发器的卓越之选

    探秘TCAN1162-Q1:汽车CAN FD收发器的卓越之选 在汽车电子领域,高速、可靠的通信至关重要。CAN(Controller Area Network)总线作为汽车通信的骨干,其收发器的性能直接影响着整个系统的稳定性和效率。今天,我们就来深入了解一款备受瞩目的汽车自供电CAN FD收发器——TCAN1162-Q1。 文件下载: tcan1162-q1.pdf 一、特性亮点 1. 高标准与兼容性 TCAN1162-Q1符合面向汽车应用的AEC Q100(1级)标准,同时满足ISO 11898-2:2016的要求,并且具备功能安全特性,还能提供用于功能
    的头像 发表于 12-16 17:10 17次阅读

    功能安全开发:汽车电子系统的“生命守护者”

    在智能电动汽车快速普及的今天,一辆汽车上可能搭载上百个电子电气(E/E)系统——从自动紧急制动、车道保持辅助,到电池管理系统、电动助力转向,这些系统极大提升了驾驶的安全性与舒适性。然而,一旦这些系统因故障或设计缺陷而“失灵”,就可能带来严重后果。如何确保即使系统“出错”,也不会危及人身安全?答案就是功能安全(Functional Safety)。 什么是功能安全? 国际标准ISO 26262对汽车功能安全的定义是:“不存在由电子电气系统的功
    的头像 发表于 12-16 17:09 5次阅读

    航盛电子与华院计算达成战略合作

    12月11日,深圳市航盛电子股份有限公司(以下简称“航盛”)与华院计算技术(上海)股份有限公司(以下简称“华院计算”)正式签署战略合作协议。华院计算创始人、董事长宣晓华,副总经理魏峰,智能体事业部总经理邱进冬,航盛集团董事长、总裁杨洪,副总裁邹正平,技术中心总经理杨洪坪等领导出席本次活动,深圳前瞻研究院院长徐文强见签。
    的头像 发表于 12-16 17:08 20次阅读

    狄耐克深度融入鸿蒙生态:以国产智慧底座,重塑“好房子”的健康内涵

    在房地产行业迈向高质量发展的关键阶段,国家明确提出建设“安全、舒适、绿色、智慧”的“好房子”新标准。作为智慧健康生活领域的先行者,狄耐克积极响应国家战略,深度融入OpenHarmony国产操作系统生态,以自主可控的鸿蒙技术底座,为传统住宅注入可感知、可联动、可进化的智慧健康新内涵,推动“好房子”从物理空间向数字生活服务全面跃升。 智慧康养,悦享银龄 ——从“互联”到“智联”的质变 依托鸿蒙分布式架构与AI智能算法,狄耐克
    的头像 发表于 12-16 17:08 20次阅读

    军用级多功能手持终端,解锁条码/RFID批量采集新纪元

    在推进部队仓储信息化与智能化转型升级的征程中,数据的精准、高效、安全采集是打通管理“末梢神经”的关键。我们专为严苛的军事仓储环境,推出了这款军用级多功能手持终端,以国产芯、全能采、高安全的卓越特性,成为一线保障官兵手中不可或缺的“信息化尖兵”。 国产自主,铸就安全可靠的计算基石 强劲性能平台:搭载≥8核2.0GHz高性能处理器,配合4GB+64GB大内存,为复杂的仓储管理软件、批量数据处理的流畅运行提供充沛算力,瞬间响应
    的头像 发表于 12-16 17:07 21次阅读

    航盛电子荣获2025铃轩奖前瞻智能座舱系统类优秀奖

    12月6日,第十届铃轩奖颁奖盛典在江苏盛大举行,航盛凭借全球首发量产的单芯片级舱驾融合方案——墨子2.0舱驾融合平台,以颠覆性的架构创新与卓越的产品性能,从超百家参评企业中脱颖而出,荣获“2025第十届铃轩奖·前瞻·智能座舱系统类优秀奖。”这一殊荣不仅是对航盛前瞻布局的高度肯定,也是航盛在舱驾融合领域引领行业的重要标志。
    的头像 发表于 12-16 17:07 17次阅读

    探索 Murata PE24108:高效降压调节器的卓越之选

    探索 Murata PE24108:高效降压调节器的卓越之选 在电子工程师的日常工作中,寻找高性能、小尺寸且高效的电源解决方案是一项持续的挑战。今天,我们将深入探讨 Murata 的 PE24108 降压调节器,它专为低输出电压应用而设计,具备诸多令人瞩目的特性。 文件下载: Murata Power Solutions PE24108两级降压稳压器.pdf 一、产品概述 PE24108 是一款紧凑、薄型且超高效率的降压型 DC - DC 转换器解决方案。它能够在 3.0V 至 3.6V 的输入电压范围内,每级输出高达 10A 的电流。
    的头像 发表于 12-16 17:05 25次阅读