技术日志2023-5-15

这篇具有很好参考价值的文章主要介绍了技术日志2023-5-15。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、list直接remove不存在的值不会报错

public static void test1() {
    List<String> list = new ArrayList<>();
    list.add("1");
    list.add("2");

    // 删除不存在的元素,返回false
    System.out.println(list.remove("3"));
    // 删除存在的元素,返回true
    System.out.println(list.remove("1"));
}
这里有一个有趣的bug:

使用 Arrays.asList(“1”,“2”); 创建的list使用 removeadd 方法会报错 java.lang.UnsupportedOperationException

代码块:

public static void test2() {
    List<String> list = Arrays.asList("1", "2", "3");
    System.out.println(list.remove("3"));
    System.out.println(list.remove("1"));
    list.add("3");
    System.out.println(list);
}

执行结果:

Exception in thread "main" java.lang.UnsupportedOperationException
	at java.util.AbstractList.remove(AbstractList.java:161)
	at java.util.AbstractList$Itr.remove(AbstractList.java:374)
	at java.util.AbstractCollection.remove(AbstractCollection.java:293)
	at com.wqguo.list.Demo.test2(Demo.java:34)
	at com.wqguo.list.Demo.main(Demo.java:13)

原因如下:
调用Arrays.asList()产生的List中的add、remove方法报异常,是因为Arrays.asList()返回的List实现类是自己内部实现的ArrayList,不是我们常用的java.util.ArrayList。Arrays的内部类ArrayList和java.util.ArrayList都是继承AbstractList,但是在Arrays的内部类ArrayList中没有重写AbstractList的add和remove方法。

AbstractList中add和remove方法都是默认throw UnsupportedOperationException的。

2、增强for循环如果list为null会报java.lang.NullPointerException

public static void main(String[] args) {
    List<String> list = null;
    for (String s : list) {
        System.out.println("jksdlf");
    }

    // 可以使用这种代码替换
    Optional.ofNullable(list).orElse(new ArrayList<>()).forEach(s->{
        System.out.println("jlskjdlfk");
    });
}

3、判断多个String类型参数任意为空时可以使用StringUtils.isAnyBlank()方法

public static void main(String[] args) {
    String mobile = "";
    String name = "jslkdf";
    System.out.println(StringUtils.isAnyBlank(mobile, name));
}

4、利用Optional来解决list为空产生NullPointerException

利用optional就可以不用判断list是否为空

Optional.ofNullable(list).orElse(new ArrayList<>()).stream().collect(Collectors.toList());

5、利用MessageFormat来格式化字符串的输出

public static String test1() {
    String USER_APP_SMS_CAPTCHA_KEY = "app:captcha:{0}:{1}";

    String mobile = "11111111";
    Integer type = 1;


    String format = MessageFormat.format(USER_APP_SMS_CAPTCHA_KEY, mobile, type);
    return format;
}

6、在工作中开发尽量在测试前将代码优化好

不然前期没有优化代码,最后自己都不敢去改了,本来没有bug的代码容易改出代码。文章来源地址https://www.toymoban.com/news/detail-446496.html

到了这里,关于技术日志2023-5-15的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 面了一个4年经验的测试工程师,自动化都不会也要15k,我也是醉了····

    在深圳这家金融公司也待了几年,被别人面试过也面试过别人,大大小小的事情也见识不少,今天又是团面的一天, 一百多个人都聚集在一起,因为公司最近在谈项目出来面试就2个人,无奈又被叫到面试房间。 整个过程我都是非常认真负责的,不管是有经验的还是没经验的

    2024年02月02日
    浏览(57)
  • 【Harmony】日志打印工具(直接粘贴复用)

    Harmony开发中,其中自带的日志打印使用起来感觉真的是一言难尽,感觉挺麻烦的。 自带Log打印用法 简单封装

    2024年02月10日
    浏览(50)
  • Java 发版jar不直接显示日志

    发版jar不直接显示日志,这样做以防有人点击服务将服务暂停导致程序出现错误。 日志可以在log.out文件查看。 注意:不要将命令弹窗关闭。

    2024年02月12日
    浏览(46)
  • 2023软件测试工程师必备技能?要卷,谁还不会了......

    软件测试岗位是怎样的? 大伙:测试?简单啊,没什么技术含量,无非就是看需求、看业务手册、看设计文档、然后点点功能是否实现,麻烦点的就是测试下部署安装是否出现兼容性问题等 web自动化测试:https://www.bilibili.com/video/BV1MS4y1W79K/ 没错,不可否认这是踏入软件测试

    2023年04月20日
    浏览(64)
  • MySQL运维15-二进制日志

    二进制日志包含了所有更新了数据或已经潜在更新了数据的语句及执行时间。语句以“事件”(event)的形式保存,它描述了数据的更改信息。 二进制日志不包含没有修改任何数据的语句。如果想要记录所有的语句(例如,为了识别有问题的查询),应该使用通用日志。 用于

    2023年04月18日
    浏览(55)
  • Python_15 ddt驱动与日志

    一、查缺补漏 1. 在测试报告中添加注释,写在类名下面就行,方法名下面,三引号 2. 直接import ddt引用的时候需要ddt.ddt, ddt.data, ddt.unpack from ddt import ddt,data,unpackkeyi from会更好,引用的时候直接data就行 二、DDT数据驱动 1. 数据驱动:将不同的数据在同一个业务逻辑上运行,只需

    2024年02月02日
    浏览(30)
  • QT学习笔记-QT5.15 + MSVC编译套件时编译日志及运行日志日志乱码解决

    操作系统:Windows10专业版 QT版本:QT5.15.2 QtCreator版本:9.0.2 MSVC版本:MSVC 2019 64bit C/C++编译器:Microsoft Visual C++ Compiler 17.1.32328.378(amd64) 调试器:Auto-detected CDB at C:Program FilesWindows Kits10Debuggersx64cdb.exe 文件编码的设置都是采用的默认值UTF-8,如下图: 当qt的项目采用MSVC构建套

    2024年02月14日
    浏览(51)
  • 这套【阿里-服务端开发与面试知识手册】2023年了不会还有人没看过吧

    整篇 128362字 ,300+页的笔记涵盖**【Java体系】和【架构能力】 两大部分 包含 网络和操作系统基础、JVM、多线程、Spring、Netty主流框架 等重点知识,以及 结合实践给出各类难点问题和解决方案**等,不管你是正在学习Java还是已经工作了都是对你的技术提升有非常大的好处,不

    2024年02月05日
    浏览(56)
  • Springboot 使用logback直接将日志写入Elasticsearch,再通过kibana查看

    正常情况下,一般组合为elk 即日志会通过logstash写入es,但本文主要为轻量级项目直接利用appender写入Elasticsearch 如果没有则添加logback-spring.xml到resource目录的根目录下 另外我们也可以在root部分不适用es记录日志而在需要的代码中用如下方式记录日志 可以自动创建索引,不用手

    2024年02月16日
    浏览(37)
  • 【Mybatis小白从0到90%精讲】15: Mybatis配置打印SQL日志

    日志(Log)是每个程序都不可或缺的一部分,它可以帮助开发人员诊断和调试问题。Mybatis,作为一款备受赞誉的ORM框架,自然也提供了强大的日志功能。 它不仅提供了 内置的标准实现 ,还支持 集成各种主流的日志框架 ,让我们可以轻松地 查看最终执行的SQL语句 ,这在进行数

    2024年02月05日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包