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

    文章

    4976

    浏览量

    74373
  • LOCA
    +关注

    关注

    0

    文章

    11

    浏览量

    7336

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    华鑫微纳:以8英寸产线为引擎,驱动国产MEMS产业新纪元

    2026年4月14日,备受瞩目的深圳国际传感器与应用技术展览会(Sensor Shenzhen 2026)在此盛大启幕。作为国内领先的8英寸MEMS晶圆代工平台,安徽华鑫微纳集成电路有限公司(以下简称“华鑫微纳”)携其核心技术亮相现场。       战略布局:全品类覆盖与8英寸产线的“双轮驱动” 在MEMS产业这片蓝海中,华鑫微纳自成立之初便确立了清晰的战略航向。面对国内高端MEMS器件严重依赖进口、产业链“卡脖子”环节突出的现状,华鑫微纳选择了“平台打底、重点
    发表于 04-24 00:24 43次阅读
    华鑫微纳:以8英寸产线为引擎,驱动国产MEMS产业新纪元

    波形为什么杂乱无章?SPI为什么可观不可测?

    最近培训时,有学员做了一个可编程信号源,遇到了三个很有意思的现象,记录分享给大家。 第一个现象是,可编程信号源本来应该输出锯齿波,但是实测却是杂乱无章,见下图。 从上图中看,很像数据乱码,很可能是数字电路或软件逻辑的问题,因此就让学员就用示波器挂SPI接口看了下SPI波形。 第二个现象是学员发现,一旦SPI接口连接了示波器探头,信号源波形就正常了,正常波形见下图。 第三个现象是,一旦用手摸下图SPI的SCK时钟线(红色线为
    的头像 发表于 04-23 18:37 822次阅读
    波形为什么杂乱无章?SPI为什么可观不可测?

    2026蓝牙亚洲大会暨展览在深启幕:定义标准,共建紧密相连的世界

    自正式诞生以来,蓝牙技术在全球无线连接与通信产业的共同见证和推动下,实现了1.0-6.0的跨越。尽管历经几十年的发展,但蓝牙技术仍历久弥新,并深度的影响着全球电子产业。根据蓝牙技术联盟官方披露的数据显示,预计到2026年,全球蓝牙设备出货量将接近60亿台,且该市场将继续保持增长势头。到2030年,年出货量将超过80亿台。   按设备类型来划分,根据蓝牙技术联盟官网数据显示,其中智能手机、无线耳机、PC配件、远程控制设备、家用电器将
    的头像 发表于 04-23 18:33 945次阅读
    2026蓝牙亚洲大会暨展览在深启幕:定义标准,共建紧密相连的世界

    德赛电池2026年一季度业绩亮眼 归母净利润7991.65万同比增长64.23%

    德赛电池2026年一季度的业绩表现亮眼,营收与净利润双双实现两位数增长,盈利质量显著提升。 在4月22日,德赛电池正式披露了2026年一季报,实现营业收入50.08亿元,同比增长14.63%;归母净利润7991.65万元,同比大幅增长64.23%。在全球消费电子市场需求偏弱的大背景下,这份成绩单超出市场预期,彰显了公司在业务结构优化、新兴赛道布局上的深厚积淀,也标志着其迈入高质量增长的新周期。 主业盈利质量显著提升 从盈利数据来看,德赛电池一季度的
    的头像 发表于 04-23 18:31 471次阅读

    6mA 低静态电流 + 小封装!WD1117 稳压器:便携式设备长效供电方案

    WD1117 是维德半导体推出的工业级低压差线性稳压器,支持固定电压与可调输出,内置限流与过热关断保护,输出精度达 ±2%。芯片具备 70dB 高 PSRR、超低输出噪声,静态电流最大 6mA,可兼容低 ESR 陶瓷电容,工作温度 - 40℃~125℃,提供 SOT223、TO252-2、SOT-89 三种封装。
    的头像 发表于 04-23 18:17 343次阅读
    6mA 低静态电流 + 小封装!WD1117 稳压器:便携式设备长效供电方案

    大族激光市值站上千亿 高端装备龙头彰显成长韧性

    4月23日,A股高端装备板块迎来重要看点,国内激光装备龙头大族激光(002008.SZ)股价强势涨停,收盘价报103.60元,总市值正式站上千亿关口达1066.67亿元,成交额65.23亿元,市场热度攀升。叠加此前发布的一季度业绩暴增财报,企业发展韧性凸显,引发资本市场、行业及股民对高端装备产业前景的广泛关注。 作为国内激光装备行业绝对龙头,大族激光市值突破千亿有坚实基本面支撑。大族激光2025年年度报告显示,公司全年实现营业收入187.59亿元,同比增
    的头像 发表于 04-23 18:11 385次阅读

    告别计量盲区!ADL3000 UL认证电表为何成光储充项目“标配”?

    当前,光储充一体化电站、工商业储能项目正如火如荼地建设中,但一个关键问题却常常被忽视:19821800313 如何精准、可靠地计量每一度电的流向? 计量不准,储能电站的削峰填谷收益就成了一笔“糊涂账”。今天,就为大家介绍一款被众多项目“点名”的核心仪表——安科瑞ADL3000导轨式多功能电能表。 ADL3000在计量精度上达到了电流电压0.2级、有功电能0.5S级的行业高标准。其核心的双向计量功能,能够精准追踪储能系统的充放电效率,并精确区分感
    的头像 发表于 04-23 18:03 387次阅读
    告别计量盲区!ADL3000 UL认证电表为何成光储充项目“标配”?

    烽火通信李明亮相第十九届中国电子信息年会

      4月16日-19日,由中国电子学会主办的第十九届中国电子信息年会在武汉隆重举行。本届年会以“e创未来”为主题,汇聚数十位两院院士、千余位行业专家及6000余名参会代表,围绕光通信、人工智能、6G等前沿领域展开深度探讨。
    的头像 发表于 04-23 17:58 625次阅读

    基于德州仪器TPS61088芯片设计5v升12v的直流升压电路的典型应用概述

    TI的电源解决方案中,升压控制器和集成DC-DC芯片‌(如TPS61088、DCV020512D等)被广泛用于电压转换设计。这些芯片支持宽输入电压范围,并可通过外部反馈网络精确调节输出电压至12V。 例如,TPS61088是一款高效同步升压转换器,输入电压可低至2.7V,输出电压可调至12V以上,适用于USB供电、便携设备等场景。它具有高达95%的转换效率,且支持1.2MHz高开关频率,便于使用小型电感,适合紧凑型PCB设计。 此外,TI还提供隔离型DC-DC转换器方案,如DCV020512D,可实
    的头像 发表于 04-23 17:58 480次阅读
    基于德州仪器TPS61088芯片设计5v升12v的直流升压电路的典型应用概述

    HMC - C014 GaAs MMIC 混频器模块:16 - 32 GHz 频段的理想之选

    HMC - C014 GaAs MMIC 混频器模块:16 - 32 GHz 频段的理想之选 在电子工程领域,混频器作为重要的射频器件,广泛应用于各种通信和雷达系统中。今天我们要介绍的 HMC - C014 GaAs MMIC 基本混频器模块,就是一款在 16 - 32 GHz 频段表现出色的产品。 文件下载: HMC-C014.pdf 典型应用场景 HMC - C014 的应用范围十分广泛,适用于多个领域。在电信基础设施方面,它能为高速数据传输提供稳定的信号处理;在军事无线电、雷达与电子对抗系统中,其高性能可确保信息的准确
    的头像 发表于 04-23 17:55 465次阅读

    HMC - C009 GaAs MMIC I/Q混频器模块:性能卓越的微波解决方案

    HMC - C009 GaAs MMIC I/Q混频器模块:性能卓越的微波解决方案 在电子工程领域,混频器模块是实现信号频率转换的关键组件,广泛应用于通信、测试、军事等众多领域。今天,我们就来详细探讨一款高性能的混频器模块——HMC - C009 GaAs MMIC I/Q混频器模块。 文件下载: HMC-C009.pdf 一、典型应用场景 HMC - C009具有广泛的适用性,是以下设备的理想选择: 电信设备 :在现代通信系统中,它能有效实现信号的频率转换和处理,确保通信的稳定和高效。 测试设备 :为
    的头像 发表于 04-23 17:55 443次阅读

    详解HMC8193 I/Q混频器:性能、应用与设计要点

    详解HMC8193 I/Q混频器:性能、应用与设计要点 在射频和微波电路设计领域,混频器是至关重要的组件,它能实现信号的频率转换,广泛应用于通信、雷达、测试测量等众多领域。今天我们要深入探讨的是Analog Devices公司的HMC8193,一款性能卓越的无源I/Q混频器。 文件下载: HMC8193.pdf 一、HMC8193概述 HMC8193是一款无源、同相/正交(I/Q)单片微波集成电路(MMIC)混频器,其RF和LO范围为2.5 GHz至8.5 GHz,IF带宽从直流到4 GHz。这种宽频特性使其在需要宽频率范围的
    的头像 发表于 04-23 17:55 438次阅读

    PCIe校时卡 B码-PCIe授时卡 双模pcie时统卡发货视频

    PCIe
    jf_47371611
    发布于 :2026年04月23日 17:54:15

    傲颖 AY-M9306-六喷嘴雾化器(气溶胶发生器)-操作简述

    行业资讯
    jf_11147687
    发布于 :2026年04月23日 17:51:20

    探索HMC1120LP4E:多功能RMS功率检测器与包络跟踪器

    探索HMC1120LP4E:多功能RMS功率检测器与包络跟踪器 在射频(RF)系统的设计中,功率检测和包络跟踪是至关重要的功能。而HMC1120LP4E作为一款来自Hittite Microwave(现属Analog Devices)的设备,为这些功能提供了强大而灵活的解决方案。今天我们就来深入了解一下这款RMS功率检测器与包络跟踪器。 文件下载: HMC1120.pdf 一、产品概述 HMC1120LP4E是一款具备集成高带宽包络检测器的RMS功率检测器,工作频率范围从直流到3.9 GHz。它的典型应用范围广泛,包括对数到均
    的头像 发表于 04-23 17:50 457次阅读