引入lombok依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
编写实体类:
package com.wm.test.entity;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/***
* @ClassName: User
* @Description:
* @Author: wm_yu
* @Create_time: 13:58 2019-10-17
*/
@Data
@Accessors(fluent = true) //生成get/set方法名称和属性名称一致
@Builder //可以流式的创建对象
public class User implements Serializable {
private static final long serialVersionUID = -6704796387326542210L;
private String name;
private Long id;
private Integer age;
}
注意注解: @Accessors(fluent = true),@Builder 的使用,见图中
编写测试类:
package com.wm.test.util;
import com.wm.test.entity.User;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/***
* @ClassName: Iputil
* @Description: ip工具类
* @Author: wm_yu
* @Create_time: 17:33 2019-10-16
*/
public class Iputil {
public static void main(String[] args) {
List<User> list = new ArrayList<>();
List<User> list1 = new ArrayList<User>(10) {{
for (int i = 0; i < 5; i++) {
User user = User.builder().age(i).name("张三" + i).id(10000L + i).build();
add(user);
//构建第二个集合
if(i <= 3){
list.add(user);
}
}
}};
//转为map key是user对象的id,value为user对象的name
Map<Long, String> hashMap = list1.stream().collect(Collectors.toMap(User::id,User::name));
//也可以不适应缩写的方式
Map<Long, String> hashMap1 = list1.stream().collect(Collectors.toMap(x -> x.id(), x -> x.name()));
hashMap.forEach((k,v) -> {
System.out.println("key为:" + k + " ------- value为:" + v);
});
//求两个list之间的交集,返回是否有交集,同时会将前面的list的值修改为属于交集的元素的集合
boolean flag = list1.retainAll(list);
System.out.println("list和list1是否存在交集:" + flag);
list1.forEach(x -> {
System.out.println("交集的元素:" + x.name());
});
}
}
可以看到代码中使用了,lombok的流式创建对象,将list转换为map,以及两个集合之间是否存在交集的演示,执行结果如下:
使用list1.removeAll(list)为从list1中移除list中含有的元素
lombok中的 @ToString(callSuper = true) 为重写toString方法,包括超类(父类的)的属性也会打印出来