记录lombok的几个注解的使用,和两个集合求交集

本文介绍了如何引入Lombok依赖,并展示了@Accessors(fluent=true)和@Builder注解在实体类中的应用。通过测试类,演示了Lombok流式创建对象、将List转换为Map以及计算两个集合交集的功能。文中还提到,使用@ToString(callSuper=true)注解可以包含超类属性进行toString方法的重写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引入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方法,包括超类(父类的)的属性也会打印出来

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值