一次哔哩哔哩面试经历,Java 中节省 90% 时间的常用的工具类

boolean sameDay = DateUtils.isSameDay(date, new Date());//比较

System.out.println(sameDay);

/*

    获取一段日期

    RANGE_WEEK_SUNDAY 从周日开始获取一周日期

    RANGE_WEEK_MONDAY 从周一开始获取一周日期

    RANGE_WEEK_RELATIVE 从当前时间开始获取一周日期

    RANGE_WEEK_CENTER 以当前日期为中心获取一周日期

    RANGE_MONTH_SUNDAY 从周日开始获取一个月日期

    RANGE_MONTH_MONDAY 从周一开始获取一个月日期

    */

Iterator<Calendar> iterator = DateUtils.iterator(date, DateUtils.RANGE_WEEK_CENTER);

while (iterator.hasNext()) {

    Calendar next = iterator.next();

    System.out.println(DateFormatUtils.format(next, "yyyy-MM-dd"));

}

}




输出结果:



Fri Jul 16 00:00:00 CST 2021

false

2021-07-12

2021-07-13

2021-07-14

2021-07-15

2021-07-16

2021-07-17

2021-07-18

Process finished with exit code 0




#### [](https://gitee.com/vip204888/java-p7)返回多个字段



有时候在一个方法中需要返回多个值的时候,经常会使用 HashMap 返回或者是 JSON 返回。Lang3 下已经帮我们提供了这样的工具类,不需要再多写 HashMap 和 JSON 了。



public static void main(String[] args) {

MutablePair<Integer, String> mutablePair = MutablePair.of(2, "这是两个值");

System.out.println(mutablePair.getLeft() + "  " + mutablePair.getRight());



MutableTriple<Integer, String, Date> mutableTriple = MutableTriple.of(2, "这是三个值", new Date());

System.out.println(mutableTriple.getLeft() + " " + mutableTriple.getMiddle() + " " + mutableTriple.getRight());

}




输出结果:



2 这是两个值

2 这是三个值 Fri Jul 16 15:24:40 CST 2021

Process finished with exit code 0




#### [](https://gitee.com/vip204888/java-p7)ArrayUtils 数组操作



ArrayUtils 是专门处理数组的类,可以让方便的处理数组而不是需要各种循环操作。



public static void main(String[] args) {

//合并数组

String[] array1 = new String[]{"value1", "value2"};

String[] array2 = new String[]{"value3", "value4"};

String[] array3 = ArrayUtils.addAll(array1, array2);

System.out.println("array3:"+ArrayUtils.toString(array3));



//clone 数组

String[] array4 = ArrayUtils.clone(array3);

System.out.println("array4:"+ArrayUtils.toString(array4));



//数组是否相同

boolean b = EqualsBuilder.reflectionEquals(array3, array4);

System.out.println(b);



//反转数组

ArrayUtils.reverse(array4);

System.out.println("array4反转后:"+ArrayUtils.toString(array4));



//二维数组转 map

Map<String, String> arrayMap = (HashMap) ArrayUtils.toMap(new String[][]{

    {"key1", "value1"}, {"key2", "value2"}

});

for (String s : arrayMap.keySet()) {

    System.out.println(arrayMap.get(s));

}

}




输出结果:



array3:{value1,value2,value3,value4}

array4:{value1,value2,value3,value4}

true

array4反转后:{value4,value3,value2,value1}

value1

value2

Process finished with exit code 0




#### [](https://gitee.com/vip204888/java-p7)EnumUtils 枚举操作



*   getEnum(Class enumClass, String enumName) 通过类返回一个枚举,可能返回空;

*   getEnumList(Class enumClass) 通过类返回一个枚举集合;

*   getEnumMap(Class enumClass) 通过类返回一个枚举map;

*   isValidEnum(Class enumClass, String enumName) 验证enumName是否在枚举中,返回true或false。



public enum ImagesTypeEnum {

JPG,JPEG,PNG,GIF;

}


 public static void main(String[] args) {

        ImagesTypeEnum imagesTypeEnum = EnumUtils.getEnum(ImagesTypeEnum.class, "JPG");

        System.out.println("imagesTypeEnum = " + imagesTypeEnum);

        System.out.println("--------------");

        List<ImagesTypeEnum> imagesTypeEnumList = EnumUtils.getEnumList(ImagesTypeEnum.class);

        imagesTypeEnumList.stream().forEach(

                imagesTypeEnum1 -> System.out.println("imagesTypeEnum1 = " + imagesTypeEnum1)

        );

        System.out.println("--------------");

        Map<String, ImagesTypeEnum> imagesTypeEnumMap = EnumUtils.getEnumMap(ImagesTypeEnum.class);

        imagesTypeEnumMap.forEach((k, v) -> System.out.println("key:" + k + ",value:" + v));

        System.out.println("-------------");

        boolean result = EnumUtils.isValidEnum(ImagesTypeEnum.class, "JPG");

        System.out.println("result = " + result);

        boolean result1 = EnumUtils.isValidEnum(ImagesTypeEnum.class, null);

        System.out.println("result1 = " + result1);

    } 

```



输出结果:



```

imagesTypeEnum = JPG

--------------

imagesTypeEnum1 = JPG

imagesTypeEnum1 = JPEG

imagesTypeEnum1 = PNG

imagesTypeEnum1 = GIF

--------------

key:JPG,value:JPG

key:JPEG,value:JPEG

key:PNG,value:PNG

key:GIF,value:GIF

-------------

result = true

result1 = false



Process finished with exit code 0 

```



### [](https://gitee.com/vip204888/java-p7)collections4 集合操作



commons-collections4 增强了 Java 集合框架,提供了一系列简单的 API 方便操作集合。



maven 依赖



```

 <dependency>  

    <groupId>org.apache.commons</groupId>  

    <artifactId>commons-collections4</artifactId>  

    <version>4.4</version>  

</dependency> 

```



#### [](https://gitee.com/vip204888/java-p7)CollectionUtils 工具类



这是一个工具类,可以检查 null 元素不被加入集合,合并列表,过滤列表,两个列表的并集、差集、合集。有部分功能在 Java 8 中可以被 Stream API 替换。



```

public static void main(String[] args) {



    //null 元素不能加进去

    List<String> arrayList1 = new ArrayList<>();

    arrayList1.add("a");

    CollectionUtils.addIgnoreNull(arrayList1, null);

    System.out.println(arrayList1.size());



    //排好序的集合,合并后还是排序的

    List<String> arrayList2 = new ArrayList<>();

    arrayList2.add("a");

    arrayList2.add("b");



    List<String> arrayList3 = new ArrayList<>();

    arrayList3.add("c");

    arrayList3.add("d");

    System.out.println("arrayList3:" + arrayList3);



    List<String> arrayList4 = CollectionUtils.collate(arrayList2, arrayList3);

    System.out.println("arrayList4:" + arrayList4);



    //交集

    Collection<String> strings = CollectionUtils.retainAll(arrayList4, arrayList3);

    System.out.println("arrayList3和arrayList4的交集:" + strings);



    //并集

    Collection<String> union = CollectionUtils.union(arrayList4, arrayList3);

    System.out.println("arrayList3和arrayList4的并集:" + union);



    //差集

    Collection<String> subtract = CollectionUtils.subtract(arrayList4, arrayList3);

    System.out.println("arrayList3和arrayList4的差集:" + subtract);



    // 过滤,只保留 b

    CollectionUtils.filter(arrayList4, s -> s.equals("b"));

    System.out.println(arrayList4);

} 

```



输出结果:



```

1

arrayList3:[c, d]

arrayList4:[a, b, c, d]

arrayList3和arrayList4的交集:[c, d]

arrayList3和arrayList4的并集:[a, b, c, d]

arrayList3和arrayList4的差集:[a, b]

[b]



Process finished with exit code 0 

```



#### [](https://gitee.com/vip204888/java-p7)Bag 统计次数



用于统计值在集合中出现的次数。



```

public static void main(String[] args) {

    Bag bag = new HashBag<String>();

    bag.add("a");

    bag.add("b");

    bag.add("a");

    bag.add("c", 3);

    System.out.println(bag);

    System.out.println(bag.getCount("c"));

} 

```



输出结果:



```

[2:a,1:b,3:c]

3



Process finished with exit code 0 

```



### [](https://gitee.com/vip204888/java-p7)beanutils Bean 操作



beanutils 是通过反射机制对 JavaBean 进行操作的。比如对 Bean 进行复制、map 转对象、对象转 Map。



maven 依赖



```

<dependency>

    <groupId>commons-beanutils</groupId>

    <artifactId>commons-beanutils</artifactId>

    <version>1.9.4</version>

</dependency> 

public class User {

private String name;



public String getName() {

    return name;

}



public void setName(String name) {

    this.name = name;

}

}


public static void main(String[] args) throws Exception {

    User user1 = new User();

    user1.setName("李四");

    User user2 = (User) BeanUtils.cloneBean(user1);

    System.out.println(user2.getName());



    //User 转 map

    Map<String, String> describe = BeanUtils.describe(user1);

    System.out.println(describe);



    //Map 转 User

    Map<String, String> beanMap = new HashMap();

    beanMap.put("name", "张三");

    User user3 = new User();

    BeanUtils.populate(user3, beanMap);

    System.out.println(user3.getName());

} 

```



输出结果:



```

李四

{name=李四}

张三



Process finished with exit code 0 

```



[](https://gitee.com/vip204888/java-p7)Guava

------------------------------------------------------------------------



Google 开源的一个基于 Java 扩展项目,包含了一些基本工具、集合扩展、缓存、并发工具包、字符串处理等。



maven 依赖



```

<dependency>

  <groupId>com.google.guava</groupId>

  <artifactId>guava</artifactId>

  <version>30.1.1-jre</version>

</dependency> 

```



### [](https://gitee.com/vip204888/java-p7)Map<String, List> 类型



在java 代码中经常会遇到需要写 Map<String, List> map 的局部变量的时候。有时候业务情况还会更复杂一点。



```

public static void main(String[] args) {

    //以前

    Map<String, List<String>> map = new HashMap<>();

    List<String> list = new ArrayList<>();

    list.add("张三");

    list.add("李四");

    map.put("名称", list);

    System.out.println(map.get("名称"));



    //现在

    Multimap<String, String> multimap = ArrayListMultimap.create();

    multimap.put("名称", "张三");

    multimap.put("名称", "李四");

    System.out.println(multimap.get("名称"));

} 

```



输出结果:



```

[张三, 李四]

[张三, 李四]



Process finished with exit code 0 

```



### [](https://gitee.com/vip204888/java-p7)value 不能重复的 Map


### 最后

看完上述知识点如果你深感Java基础不够扎实,或者刷题刷的不够、知识不全面

小编专门为你量身定制了一套<Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法>

![image](https://img-blog.csdnimg.cn/img_convert/b3aaf46c65ce43f7d16bbf21dbb61c99.png)

针对知识面不够,也莫慌!还有一整套的<Java核心进阶手册>,可以瞬间查漏补缺

![image](https://img-blog.csdnimg.cn/img_convert/d0f551e76412102090a61b09db8d71a5.png)

> 全都是一丢一丢的收集整理纯手打出来的——收整在***[【我的学习笔记大全】](https://gitee.com/vip204888/java-p7)***,有需要的朋友可以自取


更有纯手绘的各大知识体系大纲,可供梳理:Java筑基、MySQL、Redis、并发编程、Spring、分布式高性能架构知识、微服务架构知识、开源框架知识点等等的xmind手绘图~

![image](https://img-blog.csdnimg.cn/img_convert/c4cc7073e7d382bc4a1515e261964049.png)

李四");

    System.out.println(multimap.get("名称"));

} 

```



输出结果:



```

[张三, 李四]

[张三, 李四]



Process finished with exit code 0 

```



### [](https://gitee.com/vip204888/java-p7)value 不能重复的 Map


### 最后

看完上述知识点如果你深感Java基础不够扎实,或者刷题刷的不够、知识不全面

小编专门为你量身定制了一套<Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法>

[外链图片转存中...(img-0sPW4XJc-1628226821967)]

针对知识面不够,也莫慌!还有一整套的<Java核心进阶手册>,可以瞬间查漏补缺

[外链图片转存中...(img-1wqfB9YT-1628226821970)]

> 全都是一丢一丢的收集整理纯手打出来的——收整在***[【我的学习笔记大全】](https://gitee.com/vip204888/java-p7)***,有需要的朋友可以自取


更有纯手绘的各大知识体系大纲,可供梳理:Java筑基、MySQL、Redis、并发编程、Spring、分布式高性能架构知识、微服务架构知识、开源框架知识点等等的xmind手绘图~

[外链图片转存中...(img-19VFetMs-1628226821971)]

![image](https://img-blog.csdnimg.cn/img_convert/d894ac5e56375735a350ca9914c638a7.png)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值