美文网首页
java编程小技巧(java 8)

java编程小技巧(java 8)

作者: Yolanda0279 | 来源:发表于2022-09-18 00:36 被阅读0次

    CollectionUtils.isEmpty()

    使用apache或者spring下的该工具类,可以简洁的判断collection是否是null还是空:

    if (CollectionUtils.isEmpty(list))
    

    而不是使用

    if (list != null && list.size() > 0)
    

    List list = Arrays.asList("a","b");

    该方式一般用于数组转List,但如果需要对List进行add操作则不能使用,因为该方式返回的是Arrays的内部类java.util.Arrays.ArrayListt 而不是 java.util.ArrayList ,不支持add/remove, 会抛出异常:
    Exception in thread "main" java.lang.UnsupportedOperationException

    StringBuilder

    对于一个字符串如果需要多次赋值,建议使用 StringBuilder 可以节省部分资源和提高性能,例如下面的代码反复对 allNames 重新赋值,jvm会对每次赋值的结果创建一个新的String对象,造成资源的浪费:

    String allNames = "";
    for (String name : nameList) {
      allNames += name + ";";
    }
    

    而对于下面这种只赋值一次的情况,使用 +StringBuilder 是等价的,因为该方式在编译期就已经被转换为一个String对象,如果觉得该方式不够优雅,可以使用String.format("%s %s %s", "I", "like", "java") 代替:

    String str = "a" + "b" + "c";
    

    catch (IOException | NumberFormatException e)

    对于不同的exception有同样的处理方式,可以使用该方法保持代码的整洁:

    try {
      ...
    } catch (IOException | NumberFormatException e) {
      log.error("Operation failed cause of exception:", e);
    }
    

    Boolean.TRUE.equals(obj)

    使用该方式判断装箱对象,可以防止抛出 NullPointException

    Boolean b = null;
    if (b) { // this will throw NullPointException
      ...
    }
    

    StandardCharsets.UTF_8

    使用该方式指定 char set 而不是用hard code "UTF-8"

    String str = new String(bytes, StandardCharsets.UTF_8);
    

    @Scheduled(zone="")

    在配置zone的参数时只能使用GMT+/-的格式,或者使用ZoneID例如America/New_York,可参考java文档中的TimeZone: https://docs.oracle.com/javase/8/docs/api/index.html

    @Scheduled(cron="", zone="America/New_York")  // can not use +/-
    @Scheduled(cron="", zone="GMT+0:00")
    @Scheduled(cron="", zone="GMT-4:00")
    

    如果直接使用 zone="EST+0:00" 或者 zone="CST+0:00" 启动会报错:

    Invalid time zone specification "EST+0:00"
    

    IdentityHashMap

    可以保存多个相同的key,但是要求key的对象地址不一样

    Map<String, String> map = new IdentityHashMap()<>;
    map.put("a", "aaa");
    map.put("a", "bbb"); // 会覆盖上一个key
    map.put(new String("a"), "bbb"); //不会覆盖
    













    相关文章

      网友评论

          本文标题:java编程小技巧(java 8)

          本文链接:https://www.haomeiwen.com/subject/jgucsrtx.html