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)