美文网首页javaalready
Java超好用的工具类方法(持续更新ing)

Java超好用的工具类方法(持续更新ing)

作者: 小胖学编程 | 来源:发表于2022-02-23 10:21 被阅读0次
    1. 判断一个值是否为null,若是null的情况下,设置默认值
    Integer ab=null;
    ab = ab == null ? -1 : ab;
    

    可以使用更加优雅的一种方式:Optional

    Optional.ofNullable(ab).orElse(-1);
    

    在封装为一个公共方法:

    public static <T> T nullToDefault(T t, T defaultValue) {
      return t == null ? defaultValue : t;
    }
    
    1. 比较两个值是否相等

    难点:在于对于NPE的处理

    Integer ab=null;
    Integer c=null;
    ab!=null && ab.equals(c)
    

    可以使用:

    Integer ab=null;
    Integer c=null;
    java.util.Objects.equals(ab,c);
    

    但是需要注意:Objects.equals()方法int类型和long类型比较时,会返回false。原因是将其装箱为封装类型。

    1. 如果为null或者空串,则去执行默认值

    寻找第一个非空的值

    String s1 = "";
    String s2 = "";
    String s3 = "a";
    StringUtils.firstNonEmpty(s1, s2, s3);
    
    1. 计算集合元素的和
    方式1:mapToLong().sum()
    方式2:map().reduce(Long::sum).orElse(0L)
    

    5. 枚举工具类的使用

    public enum TestEnum {
        xx("xx"),
        yy("yy"),
        zz("zz"),
        aa("aa");
        
        TestEnum(String path) {
        }
    }
    

    获取一个范围的枚举值:

    获取一个范围的枚举值: Lists.newLinkedList(EnumSet.range(TestEnum.xx, TestEnum.zz));
    
    获取一个枚举类的枚举值:Lists.newLinkedList(EnumSet.allOf(TestEnum.class));
    
    1. 对元素分组后进行排序
        public static void main(String[] args) {
            List<User> users = Lists.newArrayList(new User(1, 1)
                    , new User(3, 1)
                    , new User(2, 1)
                    , new User(4, 2)
                    , new User(1, 2)
            );
            Map<Integer, List<User>> collect = users.stream()
                    .collect(Collectors.groupingBy(User::getType))    //分组
                    .entrySet().stream()   //将Map转化成Steam<Set<Map.Entry<K, V>>>
                    .map(r -> new SimpleEntry<>(r.getKey(), r.getValue().stream().sorted(Comparator.comparing(User::getId)).collect(
                            Collectors.toList())))   //映射,使用SimpleEntry<>承接
                    .collect(Collectors.toMap(SimpleEntry::getKey,SimpleEntry::getValue));   //转化为Map
            System.out.println(collect);
        }
    
        @Data
        @AllArgsConstructor
        @NoArgsConstructor
        private static class User 
    

    6. 数字工具类

    依赖:

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.12.0</version>
    </dependency>
    

    转化方法:

    NumberUtils.toLong("1000");
    

    四舍五入的方法:

    public class TestNumberUtils {
        public static void main(String[] args) {
            //相除四舍五入取2位小数
            int a = 1;
            int b = 3;
            BigDecimal bigDecimal = NumberUtils.toScaledBigDecimal((double) a / b, 2, RoundingMode.HALF_UP);
            System.out.println(bigDecimal.doubleValue());
        }
    }
    

    相关文章

      网友评论

        本文标题:Java超好用的工具类方法(持续更新ing)

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