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

    文章

    4908

    浏览量

    71305
  • LOCA
    +关注

    关注

    0

    文章

    11

    浏览量

    7254

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Texas Instruments TPS56425xEVM转换器评估模块 (EVM)数据手册

    Texas Instruments TPS56425xEVM转换器评估模块 (EVM) 是经完整组装和测试的电路,用于评估TPS564252、TPS564255和TPS564257降压转换器。TPS564252可在Eco-mode下工作,从而在轻负载期间保持高效率。TPS564257在FCCM模式下工作,可在所有负载条件下保持相同的频率和较低的输出纹波。TPS564255在OOA模式下工作,可防止产生音频噪声。Texas Instruments TPS56425xEVM的工作输入电压范围为3V至16V,标称电压为12V,在4A时提供1.05V输出。它还包括用于反馈环路测量的交流信号注入端子。
    的头像 发表于 08-25 09:32 ?12次阅读
    Texas Instruments TPS56425xEVM转换器评估模块 (EVM)数据手册

    ?TPS92520-Q1 双通道同步降压LED驱动器技术文档总结

    TPS92520-Q1 是一款单片双路同步降压 LED 驱动器,具有 4.5V 至 65V 的宽工作输入电压范围,可独立为两串串联的 LED 供电。TPS92520-Q1 实现自适应导通时间平均电流模式控制,旨在与分流 FET 调光技术和基于 LED 矩阵管理器的动态光束前照灯兼容。自适应导通时间控制提供近乎恒定的开关频率,可在 100 kHz 和 2.2 MHz 之间设置。电感电流检测和闭环反馈可在较宽的输入电压、输出电压和环境温度范围内实现超过 ±4% 的精度。
    的头像 发表于 08-25 09:32 ?18次阅读
    ?TPS92520-Q1 双通道同步降压LED驱动器技术文档总结

    泰凌微电子蓝牙信道探测解决方案亮点抢先看

    当智能设备的互联互通成为技术演进的核心旋律,空间感知与精准测距正成为解锁万物智能的关键密钥。一场聚焦蓝牙技术前沿突破的方案分享即将启幕,泰凌微电子将为您深度剖析蓝牙信道探测(Channel Sounding)解决方案,揭秘其如何为精准、安全的测距应用提供强大技术支撑,引领智能交互迈入全新维度。
    的头像 发表于 08-25 09:28 ?20次阅读

    TPSM843A26EVM电源模块评估模块技术解析与应用指南

    Texas Instruments TPSM843A26EVM电源模块评估模块 (EVM) 设计用于访问TPSM843A26功能。TPSM843A26是一款同步降压模块,可提供高达16A的输出和4V至18V的输入。高侧和低侧MOSFET,以及栅极驱动电路、电感器和基本无源元件都集成在TPSM843A26封装内。MOSFET低漏源导通电阻使Texas Instruments TPSM843A26能够实现高效率,并有助于在额定输出电流下保持较低的结温。固定频率高级电流模式控制,让用户能够将模块与外部时钟源同步。外部分压器允许调节输出电压。
    的头像 发表于 08-25 09:27 ?13次阅读
    TPSM843A26EVM电源模块评估模块技术解析与应用指南

    圣邦微电子推出VCE275X系列轴心磁编码器芯片

    圣邦微电子推出 VCE275X 系列轴心磁编码器芯片。器件基于各向异性磁阻(AMR)技术,结合优化的 CMOS 精细调理电路,可实现 14 位有效分辨率的 360° 磁场角度检测。该系列提供多种输出信号选择,包括增量式 ABZ 信号、绝对式 SPI&PWM 信号以及换相用的 UVW 信号,满足不同类型电机的测量和控制需求。
    的头像 发表于 08-25 09:24 ?35次阅读
    圣邦微电子推出VCE275X系列轴心磁编码器芯片

    ?TPS92200同步降压LED驱动器技术文档总结

    TPS92200器件是一款 1.5A 同步降压 LED 驱动器,最大输入电压为 30V。通过集成高侧和低侧 NMOS 开关,TPS92200 器件以超小的解决方案尺寸提供高功率密度和高效率。TPS92200 器件采用峰值电流模式控制和全内部补偿,可在各种工作条件下提供高瞬态响应性能。
    的头像 发表于 08-25 09:20 ?39次阅读
    ?TPS92200同步降压LED驱动器技术文档总结

    TMAG5173EVM传感器评估模块技术解析与应用指南

    Texas Instruments TMAG5173EVM传感器评估模块 (EVM) 是一个易于使用的平台,用于评估线性3D霍尔效应传感器TMAG5173-Q1器件的主要特性和性能。该评估模块包括一个磁体和一个TMAG5173-Q1子板。Texas Instruments TMAG5173EVM可搭配传感器控制器板TI-SCB(单独出售)使用,从而实现随附的图形用户界面 (GUI)。还包括一个3D打印的操纵杆模块,用于生成x、y和z方向的磁场
    的头像 发表于 08-25 09:19 ?15次阅读
    TMAG5173EVM传感器评估模块技术解析与应用指南

    智多晶LLCR技术的工作原理和应用场景

    工程师朋友们注意啦!今天要给大家安利一项FPGA领域的黑科技——西安智多晶微电子推出的LLCR(LVDS Local Clock Receiving)技术,使用本地PLL产生高速时钟,通过相位跟踪,对接收的LVDS信号进行实时跟踪,实现LVDS数据接收。
    的头像 发表于 08-25 09:17 ?11次阅读
    智多晶LLCR技术的工作原理和应用场景

    比亚迪将在马来西亚建设组装工厂

    2025年8月22日,比亚迪在马来西亚举办全新比亚迪海豹上市发布会,并在发布会上宣布将在马来西亚当地建设组装工厂(CKD),预计将于2026年正式投产。同日,第36家比亚迪 Wing Hin门店也迎来了盛大开业,目前,比亚迪及腾势品牌在马来西亚的门店总数已达到 43 家。这一举措既是比亚迪在马来西亚市场的重要里程碑,更是比亚迪坚持全球化和本地化战略的又一力证。
    的头像 发表于 08-25 09:09 ?27次阅读

    中国储能全球占比超40%,独立储能占比46%首超新能源

    电子发烧友网报道(文/黄山明)在全球能源转型加速推进与“双碳”战略深入实施的背景下,新型储能作为支撑新型电力系统建设的关键技术,正迎来前所未有的发展机遇。近期,国家能源局发布《中国新型储能发展报告(2025)》,介绍了中国近年来的新型储能发展情况。 ? 储能行业的“中国速度” ? 如果用一句话概括2024年的中国储能,那就是“两年翻一番”。《报告》显示,截至2024年底,全国新型储能累计装机7376万千瓦/1.68亿千瓦时,相当于每天
    的头像 发表于 08-25 08:46 ?757次阅读
    中国储能全球占比超40%,独立储能占比46%首超新能源

    套刻精度已达2μm,芯碁微装直写光刻设备获头部封测企业订单

    电子发烧友网报道(文/莫婷婷)近期,合肥芯碁微电子装备股份有限公司(以下简称“芯碁微装”)宣布,公司面 向中道领域的晶圆级及板级直写光刻设备系列 已获得重大市场突破。公司已与多家国内头部封测企业签订采购订单,产品主要应用于 SoW、CIS、类CoWoS-L 等大尺寸芯片封装方向。 ? 芯碁微装指出,随着人工智能、高性能计算等应用的爆发式增长,市场对大尺寸、高集成度的中道芯片需求激增。芯碁微装凭借其在直写光刻领域深厚的技术积累,
    的头像 发表于 08-25 08:38 ?1224次阅读
    套刻精度已达2μm,芯碁微装直写光刻设备获头部封测企业订单

    事件相机会成为自动驾驶的下一代核心传感器?

    电子发烧友网报道(文/梁浩斌)最近听闻有智驾公司开始研究用事件相机作为核心传感器,以替代目前普遍使用的RGB相机。那么事件相机是什么?跟现有的传感器有哪些优势?这篇文章会简单解答到这两个核心问题。 ? 事件相机是模仿生物视觉系统的一种新型视觉感知传感器,只对场景中的变化作出响应,工作原理和传统的CCD和CMOS图像传感器有本质的区别。传统的CCD和CMOS图像传感器是一定的帧率,获取画面中完整的图像帧,比如30fps的视频画面,相当
    的头像 发表于 08-25 08:36 ?1297次阅读

    SiLM2023CA-DG 智能相位控制的200V半桥驱动芯片

    在工业电机控制和功率转换领域,一款能够提供智能相位管理的高压驱动器对系统架构设计至关重要。SiLM2023CA-DG 正是这样一款专为200V应用设计的创新型半桥驱动器。采用标准SOP8封装,该芯片不仅具备高压驱动能力,更以其独特的相位控制特性为系统设计带来前所未有的灵活性。核心优势:智能相位与安全驱动的完美融合SiLM2023CA-DG的核心价值在于其在标准半桥驱动功能基础上,提供了增强的相位控制能力: 高压运行能力: 采用浮动通道设计,支持高达200V的工作电压,并能承受瞬态负电压冲击,完美适配自举电路,满足各种半桥拓扑应用需求。 智能相位控制: 独具特色的高边输出与输入同相,低边输出与输入反相的设计,为复杂的电机控制和电源拓扑提供了天然的相位调整能力,简化了系统逻辑设计。 全方位安全保护: 集成防止交叉导通逻辑和520ns固定死区时间,从根本上杜绝了桥臂直通风险,为系统安全运行提供了双重保障。 关键特性深度解读 卓越的可靠性设计: 采用锁存免疫CMOS技术和高压集成电路工艺,能彻底免疫高dV/dt噪声干扰,防止误导通和系统闩锁,确保在恶劣工业环境下的稳定运行。 允许承受瞬态负电压,增强了系统在高压开关环境下的可靠性。 强大的驱动性能: 提供290mA源电流和600mA灌电流的不对称驱动能力,确保功率管的高速、可靠关断。 680ns/150ns的典型开关延时配合520ns死区时间,为系统提供了安全可靠的工作时序。 广泛的兼容性: 驱动电源范围10V至20V,兼容各种驱动电源设计。 逻辑输入全面兼容3.3V、5V和15V电平,可直接与微控制器连接,无需额外电平转换电路。 典型应用场景 工业电机驱动系统(伺服驱动器、变频器) 开关电源(半桥、全桥拓扑) 工业自动化设备 需要特殊相位控制的应用场合 总结 SiLM2023CA-DG (SOP8) 是一款在相位控制方面具有独特优势的200V半桥驱动器。其智能的相位控制设计、520ns固定死区时间、防止交叉导通逻辑以及优异的抗干扰特性,使其成为工业控制和安全关键型应用的理想选择。对于需要特殊相位管理功能的系统设计而言,SiLM2023CA-DDG提供了简单而有效的解决方案,是构建智能、安全功率系统的创新选择。#SiLM2023 #半桥驱动 #门极驱动 #非隔离驱动器
    发表于 08-25 08:33

    JBD再获亿元融资,“蜂鸟Ⅱ”彩色光引擎即将发布

    电子发烧友网综合报道, 近日宣布,上海显耀显示科技有限公司(简称:JBD) 宣布 完成数亿元人民币的B1轮融资。本轮由安徽铁路基金、方华基金、光跃投资、混沌投资、蚂蚁独角兽基金、上海科创基金、锡创投、招商局中国基金等共同投资(按名称首字母A-Z排序),融资资金将主要用于MicroLED微显示核心技术研发、扩大产能、人才引进及生态合作的深入拓展,以满足全球AR+AI终端市场日益增长的需求。 ? JBD成立于2015年, 专注于 MicroLED微显示 领域。
    发表于 08-25 08:31 ?254次阅读
    JBD再获亿元融资,“蜂鸟Ⅱ”彩色光引擎即将发布

    全球首次!人形机器人 24 小时自主行走

    电子发烧友网综合报道?近日,智元机器人宣布,该公司旗下的人形机器人?“远征?A2”?完成了一场全球首次的?24?小时高温环境下全自主行走挑战。 ? 挑战于?8?月?17?日?8:20?开始,持续至?8?月?18?日?8:20,地点位于上海浦东新区。挑战期间,日间最高气温超过?35℃,地面温度高达?61℃,夜间则面临弱光环境。此外,行走路线涵盖柏油、砖石等多种材质路面,并设置了锥桶、减速带等障碍。过程中,远征?A2?展现了强大的自主导航和环境感知能力
    发表于 08-25 08:29 ?258次阅读