Java 编码小技巧

1、锁与事务#

获取锁与释放锁不能放在事务里面。
先释放锁再提交事务会导致脏数据。

2、Consumer 和 Supplier#

  1. Consumer表示一个操作,其接收一个参数且没有返回值
    @Test
    public void consumerTest() {
        List<String> fruits = Arrays.asList("apple", "banana", "orange");
        print(fruits, o -> System.out.println(o));
        print(fruits, System.out::println);
    }

    public void print(List<String> fruits, Consumer<String> consumer) {
        for (String fruit: fruits) {
            consumer.accept(fruit);
        }
    }
  1. Supplier表示结果的提供者,其返回一个对象且不接收任何参数
    @Test
    public void supplier() {
        Supplier<String> now = () -> {
            DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            return dtf.format(LocalDateTime.now());
        };
        System.out.println(now.get());
    }

3、BigDecimal#

  1. 为避免精度无法表示问题
    使用new BigDecimal("0.1")接收字符类型,使用BigDecimal.valueOf(0.1)接收数字类型
  2. 转换成字符串
    toPlainString()
  3. BigDecimal在列表中的累加
    @Test
    public void decimalTest () {
        List<BigDecimal> cardValid = new LinkedList<>();
        cardValid.add(new BigDecimal("0.1"));
        cardValid.add(BigDecimal.valueOf(0.1));
        BigDecimal totalPrice = cardValid.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
        System.out.println(totalPrice.toPlainString());
    }

4、拼接字符#

  1. 使用StringJoiner进行拼接,创建时需指定拼接的符号
StringJoiner sj = new StringJoiner(",");
sj.add("a");
sj.add("b");
// 出来的结果是 a,b
String result = sj.toString();
  1. 使用占位符格式化字符串
String name = "椰羊";
Integer age = 3500;
// %s 代表占位符,按参数顺序进行填充
String result = String.format("姓名:%s,年龄:%s", name, age);

作者:revil

出处:https://www.cnblogs.com/revil/p/16730524.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   多久会在  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示