list实体对象把重复的元素过滤放到新的list

package com.ruoyi.business.domain;

/**

  • @ClassName Student

  • @Description

  • @Author 曹敏

  • @Date 2022/11/2 11:11
    **/
    public class Student {
    private int id;
    private String userName;
    private String sfNo;

    public Student(int id, String userName, String sfNo) {
    this.id = id;
    this.userName = userName;
    this.sfNo = sfNo;
    }

    public Student() {

    }

    public int getId() {
    return id;
    }

    public void setId(int id) {
    this.id = id;
    }

    public String getUserName() {
    return userName;
    }

    public void setUserName(String userName) {
    this.userName = userName;
    }

    public String getSfNo() {
    return sfNo;
    }

    public void setSfNo(String sfNo) {
    this.sfNo = sfNo;
    }
    }
    package com.ruoyi.business.domain;

import com.alibaba.fastjson.JSONArray;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**

  • @ClassName ListTest

  • @Description 把list,重复的身份证数据,提取出来放到一个新的list

  • @Author 曹敏

  • @Date 2022/11/2 13:22
    **/
    public class ListTest {
    public static void main(String[] args) {
    List testList = new ArrayList();
    testList.add(new Student(1,“张一”,“123”));
    testList.add(new Student(2,“张二”,“234”));
    testList.add(new Student(3,“张三”,“123”));
    testList.add(new Student(4,“张四”,“456”));
    testList.add(new Student(5,“张五”,“567”));
    testList.add(new Student(6,“张六”,“123”));
    testList.add(new Student(7,“张七”,“456”));
    testList.add(new Student(8,“张八”,“567”));
    testList.add(new Student(9,“张九”,“678”));
    testList.add(new Student(10,“张十”,“789”));

     List<Student> repeatList = new ArrayList<Student>();//用于存放重复的元素的list
    
     List<Student> newList=null;
     Map<String, Integer> map = new HashMap<>();
     for (Student k: testList) {
         // 通过身份证号统计元素出现的次数
         Integer count = map.get(k.getSfNo());
         map.put(k.getSfNo(), (count == null) ? 1 : count + 1);
         // 身份证号首次出现不对数据进行过滤,map.get(k.getSfNo()) >1(出现第二次才根据身份证号进行过滤后的list,过滤后放到新的 newList)
         // 身份证号统计次数,map.get(k.getSfNo()) >3(出现第三次不过虑)
         if(map.get(k.getSfNo()) >1 && map.get(k.getSfNo())<3){
             // 43行代码是对 testList 进行身份证号码进行过滤后的到新的 newList
             newList= testList.stream().filter(m->m.getSfNo().equals(k.getSfNo())).collect(Collectors.toList());
             for (int n=0;n<newList.size();n++){
                 Student st = new Student();
                 st.setId(newList.get(n).getId());
                 st.setUserName(newList.get(n).getUserName());
                 st.setSfNo(newList.get(n).getSfNo());
                 repeatList.add(st);
             }
         }
     }
     System.out.println(JSONArray.toJSON(repeatList));
    

    }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值