Java通过steam实现数据去重、去重获取最新一条

目录

1、添加依赖

2、测试实体类

3、三种方式去


1、添加依赖

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.3</version>
</dependency>

2、测试实体类

package com.shucha.deveiface.biz.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.sdy.common.utils.DateUtil;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;

import java.util.Date;

@Data
public class RiskForecastDTO {
    private String fNum;//风险防范区编号
    @JsonFormat(pattern = DateUtil.DATETIME_FORMAT)
    private Date groupTime;//更新时间
    private String hour1;//一小时降雨
    private String hour3;//3小时降雨
    private String hour6;//6小时降雨
    private String hour12;//12小时降雨
    private String hour24;//24小时降雨
    private String level;//预警等级
    private String tag;//类型 0 实时预警 1 气象预报预警
}

3、三种方式去

package com.shucha.deveiface.biz.test;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.sdy.mvc.utils.JsonUtil;
import com.shucha.deveiface.biz.dto.RiskForecastDTO;
import org.apache.commons.collections4.ListUtils;

import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;

/**
 * @author tqf
 * @Description
 * @Version 1.0
 * @since 2022-07-06 16:37
 */
public class RiskForecastTest {
    // 测试数据
    private static String data = "[{\"fNum\":\"330727FF0192\",\"groupTime\":\"2022-06-29T19:00:00+08:00\",\"hour1\":39,\"hour3\":45.5,\"hour6\":45.5,\"hour12\":45.5,\"hour24\":45.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0047\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":45,\"hour3\":45,\"hour6\":45,\"hour12\":45,\"hour24\":45,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0047\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":26.5,\"hour3\":71.5,\"hour6\":71.5,\"hour12\":71.5,\"hour24\":71.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0047\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":8.5,\"hour3\":80,\"hour6\":80,\"hour12\":80,\"hour24\":80,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0047\",\"groupTime\":\"2022-03-14T23:00:00+08:00\",\"hour1\":1.5,\"hour3\":36.5,\"hour6\":81.5,\"hour12\":81.5,\"hour24\":81.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0047\",\"groupTime\":\"2022-03-15T00:00:00+08:00\",\"hour1\":1,\"hour3\":11,\"hour6\":82.5,\"hour12\":82.5,\"hour24\":82.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0047\",\"groupTime\":\"2022-03-15T01:00:00+08:00\",\"hour1\":0,\"hour3\":2.5,\"hour6\":82.5,\"hour12\":82.5,\"hour24\":82.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0049\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":45,\"hour3\":45,\"hour6\":45,\"hour12\":45,\"hour24\":45,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0049\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":26.5,\"hour3\":71.5,\"hour6\":71.5,\"hour12\":71.5,\"hour24\":71.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0049\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":8.5,\"hour3\":80,\"hour6\":80,\"hour12\":80,\"hour24\":80,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0049\",\"groupTime\":\"2022-03-14T23:00:00+08:00\",\"hour1\":1.5,\"hour3\":36.5,\"hour6\":81.5,\"hour12\":81.5,\"hour24\":81.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0049\",\"groupTime\":\"2022-03-15T00:00:00+08:00\",\"hour1\":1,\"hour3\":11,\"hour6\":82.5,\"hour12\":82.5,\"hour24\":82.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0049\",\"groupTime\":\"2022-03-15T01:00:00+08:00\",\"hour1\":0,\"hour3\":2.5,\"hour6\":82.5,\"hour12\":82.5,\"hour24\":82.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0057\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":45,\"hour3\":45,\"hour6\":45,\"hour12\":45,\"hour24\":45,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0057\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":26.5,\"hour3\":71.5,\"hour6\":71.5,\"hour12\":71.5,\"hour24\":71.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0057\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":8.5,\"hour3\":80,\"hour6\":80,\"hour12\":80,\"hour24\":80,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0057\",\"groupTime\":\"2022-03-14T23:00:00+08:00\",\"hour1\":1.5,\"hour3\":36.5,\"hour6\":81.5,\"hour12\":81.5,\"hour24\":81.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0057\",\"groupTime\":\"2022-03-15T00:00:00+08:00\",\"hour1\":1,\"hour3\":11,\"hour6\":82.5,\"hour12\":82.5,\"hour24\":82.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0057\",\"groupTime\":\"2022-03-15T01:00:00+08:00\",\"hour1\":0,\"hour3\":2.5,\"hour6\":82.5,\"hour12\":82.5,\"hour24\":82.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0085\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":40.5,\"hour3\":41,\"hour6\":41,\"hour12\":41,\"hour24\":41,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0085\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":17.9,\"hour3\":58.9,\"hour6\":58.9,\"hour12\":58.9,\"hour24\":58.9,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0085\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":11,\"hour3\":69.4,\"hour6\":69.9,\"hour12\":69.9,\"hour24\":69.9,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0087\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":45,\"hour3\":45,\"hour6\":45,\"hour12\":45,\"hour24\":45,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0087\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":26.5,\"hour3\":71.5,\"hour6\":71.5,\"hour12\":71.5,\"hour24\":71.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0087\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":8.5,\"hour3\":80,\"hour6\":80,\"hour12\":80,\"hour24\":80,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0087\",\"groupTime\":\"2022-03-14T23:00:00+08:00\",\"hour1\":1.5,\"hour3\":36.5,\"hour6\":81.5,\"hour12\":81.5,\"hour24\":81.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0087\",\"groupTime\":\"2022-03-15T00:00:00+08:00\",\"hour1\":1,\"hour3\":11,\"hour6\":82.5,\"hour12\":82.5,\"hour24\":82.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0087\",\"groupTime\":\"2022-03-15T01:00:00+08:00\",\"hour1\":0,\"hour3\":2.5,\"hour6\":82.5,\"hour12\":82.5,\"hour24\":82.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0089\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":45,\"hour3\":45,\"hour6\":45,\"hour12\":45,\"hour24\":45,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0089\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":26.5,\"hour3\":71.5,\"hour6\":71.5,\"hour12\":71.5,\"hour24\":71.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0089\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":8.5,\"hour3\":80,\"hour6\":80,\"hour12\":80,\"hour24\":80,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0089\",\"groupTime\":\"2022-03-14T23:00:00+08:00\",\"hour1\":1.5,\"hour3\":36.5,\"hour6\":81.5,\"hour12\":81.5,\"hour24\":81.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0089\",\"groupTime\":\"2022-03-15T00:00:00+08:00\",\"hour1\":1,\"hour3\":11,\"hour6\":82.5,\"hour12\":82.5,\"hour24\":82.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0089\",\"groupTime\":\"2022-03-15T01:00:00+08:00\",\"hour1\":0,\"hour3\":2.5,\"hour6\":82.5,\"hour12\":82.5,\"hour24\":82.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0090\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":45,\"hour3\":45,\"hour6\":45,\"hour12\":45,\"hour24\":45,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0090\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":26.5,\"hour3\":71.5,\"hour6\":71.5,\"hour12\":71.5,\"hour24\":71.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0090\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":8.5,\"hour3\":80,\"hour6\":80,\"hour12\":80,\"hour24\":80,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0090\",\"groupTime\":\"2022-03-14T23:00:00+08:00\",\"hour1\":1.5,\"hour3\":36.5,\"hour6\":81.5,\"hour12\":81.5,\"hour24\":81.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0090\",\"groupTime\":\"2022-03-15T00:00:00+08:00\",\"hour1\":1,\"hour3\":11,\"hour6\":82.5,\"hour12\":82.5,\"hour24\":82.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0090\",\"groupTime\":\"2022-03-15T01:00:00+08:00\",\"hour1\":0,\"hour3\":2.5,\"hour6\":82.5,\"hour12\":82.5,\"hour24\":82.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0151\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":45,\"hour3\":45,\"hour6\":45,\"hour12\":45,\"hour24\":45,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0151\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":26.5,\"hour3\":71.5,\"hour6\":71.5,\"hour12\":71.5,\"hour24\":71.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0151\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":8.5,\"hour3\":80,\"hour6\":80,\"hour12\":80,\"hour24\":80,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0151\",\"groupTime\":\"2022-03-14T23:00:00+08:00\",\"hour1\":1.5,\"hour3\":36.5,\"hour6\":81.5,\"hour12\":81.5,\"hour24\":81.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0151\",\"groupTime\":\"2022-03-15T00:00:00+08:00\",\"hour1\":1,\"hour3\":11,\"hour6\":82.5,\"hour12\":82.5,\"hour24\":82.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0151\",\"groupTime\":\"2022-03-15T01:00:00+08:00\",\"hour1\":0,\"hour3\":2.5,\"hour6\":82.5,\"hour12\":82.5,\"hour24\":82.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0156\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":40.5,\"hour3\":41,\"hour6\":41,\"hour12\":41,\"hour24\":41,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0156\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":17.9,\"hour3\":58.9,\"hour6\":58.9,\"hour12\":58.9,\"hour24\":58.9,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0156\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":11,\"hour3\":69.4,\"hour6\":69.9,\"hour12\":69.9,\"hour24\":69.9,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0157\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":40.5,\"hour3\":41,\"hour6\":41,\"hour12\":41,\"hour24\":41,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0157\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":17.9,\"hour3\":58.9,\"hour6\":58.9,\"hour12\":58.9,\"hour24\":58.9,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0157\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":11,\"hour3\":69.4,\"hour6\":69.9,\"hour12\":69.9,\"hour24\":69.9,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0170\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":40.5,\"hour3\":41,\"hour6\":41,\"hour12\":41,\"hour24\":41,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0170\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":17.9,\"hour3\":58.9,\"hour6\":58.9,\"hour12\":58.9,\"hour24\":58.9,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0170\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":11,\"hour3\":69.4,\"hour6\":69.9,\"hour12\":69.9,\"hour24\":69.9,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0193\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":52,\"hour3\":55,\"hour6\":55,\"hour12\":55,\"hour24\":55,\"level\":1,\"tag\":1},{\"fNum\":\"330727FF0193\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":26,\"hour3\":81,\"hour6\":81,\"hour12\":81,\"hour24\":81,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0193\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":6.5,\"hour3\":84.5,\"hour6\":87.5,\"hour12\":87.5,\"hour24\":87.5,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0193\",\"groupTime\":\"2022-03-14T23:00:00+08:00\",\"hour1\":1,\"hour3\":33.5,\"hour6\":88.5,\"hour12\":88.5,\"hour24\":88.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0193\",\"groupTime\":\"2022-03-15T00:00:00+08:00\",\"hour1\":0.5,\"hour3\":8,\"hour6\":89,\"hour12\":89,\"hour24\":89,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0193\",\"groupTime\":\"2022-03-15T01:00:00+08:00\",\"hour1\":0,\"hour3\":1.5,\"hour6\":86,\"hour12\":89,\"hour24\":89,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0191\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":40.5,\"hour3\":41,\"hour6\":41,\"hour12\":41,\"hour24\":41,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0191\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":17.9,\"hour3\":58.9,\"hour6\":58.9,\"hour12\":58.9,\"hour24\":58.9,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0191\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":11,\"hour3\":69.4,\"hour6\":69.9,\"hour12\":69.9,\"hour24\":69.9,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0194\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":6.5,\"hour3\":59,\"hour6\":59,\"hour12\":59,\"hour24\":59,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0195\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":6.5,\"hour3\":59,\"hour6\":59,\"hour12\":59,\"hour24\":59,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0042\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":41.5,\"hour3\":41.5,\"hour6\":41.5,\"hour12\":41.5,\"hour24\":41.5,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0042\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":3.5,\"hour3\":58,\"hour6\":58,\"hour12\":58,\"hour24\":58,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0107\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":41.5,\"hour3\":41.5,\"hour6\":41.5,\"hour12\":41.5,\"hour24\":41.5,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0107\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":3.5,\"hour3\":58,\"hour6\":58,\"hour12\":58,\"hour24\":58,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0008\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":32.5,\"hour3\":34,\"hour6\":34,\"hour12\":34,\"hour24\":34,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0008\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":27,\"hour3\":61,\"hour6\":61,\"hour12\":61,\"hour24\":61,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0008\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":12,\"hour3\":71.5,\"hour6\":73,\"hour12\":73,\"hour24\":73,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0009\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":32.5,\"hour3\":34,\"hour6\":34,\"hour12\":34,\"hour24\":34,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0009\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":27,\"hour3\":61,\"hour6\":61,\"hour12\":61,\"hour24\":61,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0009\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":12,\"hour3\":71.5,\"hour6\":73,\"hour12\":73,\"hour24\":73,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0120\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":32.5,\"hour3\":34,\"hour6\":34,\"hour12\":34,\"hour24\":34,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0120\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":27,\"hour3\":61,\"hour6\":61,\"hour12\":61,\"hour24\":61,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0120\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":12,\"hour3\":71.5,\"hour6\":73,\"hour12\":73,\"hour24\":73,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0142\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":32.5,\"hour3\":34,\"hour6\":34,\"hour12\":34,\"hour24\":34,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0142\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":27,\"hour3\":61,\"hour6\":61,\"hour12\":61,\"hour24\":61,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0142\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":12,\"hour3\":71.5,\"hour6\":73,\"hour12\":73,\"hour24\":73,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0144\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":32.5,\"hour3\":34,\"hour6\":34,\"hour12\":34,\"hour24\":34,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0144\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":27,\"hour3\":61,\"hour6\":61,\"hour12\":61,\"hour24\":61,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0144\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":12,\"hour3\":71.5,\"hour6\":73,\"hour12\":73,\"hour24\":73,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0145\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":32.5,\"hour3\":34,\"hour6\":34,\"hour12\":34,\"hour24\":34,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0145\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":27,\"hour3\":61,\"hour6\":61,\"hour12\":61,\"hour24\":61,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0145\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":12,\"hour3\":71.5,\"hour6\":73,\"hour12\":73,\"hour24\":73,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0150\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":45,\"hour3\":45,\"hour6\":45,\"hour12\":45,\"hour24\":45,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0150\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":15,\"hour3\":60,\"hour6\":60,\"hour12\":60,\"hour24\":60,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0150\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":10,\"hour3\":70,\"hour6\":70,\"hour12\":70,\"hour24\":70,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0118\",\"groupTime\":\"2022-06-29T19:00:00+08:00\",\"hour1\":31.5,\"hour3\":31.5,\"hour6\":31.5,\"hour12\":31.5,\"hour24\":31.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0166\",\"groupTime\":\"2022-06-29T19:00:00+08:00\",\"hour1\":31.5,\"hour3\":31.5,\"hour6\":31.5,\"hour12\":31.5,\"hour24\":31.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0220\",\"groupTime\":\"2022-06-29T19:00:00+08:00\",\"hour1\":31.5,\"hour3\":31.5,\"hour6\":31.5,\"hour12\":31.5,\"hour24\":31.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0224\",\"groupTime\":\"2022-06-29T19:00:00+08:00\",\"hour1\":31.5,\"hour3\":31.5,\"hour6\":31.5,\"hour12\":31.5,\"hour24\":31.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0225\",\"groupTime\":\"2022-06-29T19:00:00+08:00\",\"hour1\":31.5,\"hour3\":31.5,\"hour6\":31.5,\"hour12\":31.5,\"hour24\":31.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0226\",\"groupTime\":\"2022-06-29T19:00:00+08:00\",\"hour1\":31.5,\"hour3\":31.5,\"hour6\":31.5,\"hour12\":31.5,\"hour24\":31.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0231\",\"groupTime\":\"2022-06-29T19:00:00+08:00\",\"hour1\":31.5,\"hour3\":31.5,\"hour6\":31.5,\"hour12\":31.5,\"hour24\":31.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0233\",\"groupTime\":\"2022-06-29T19:00:00+08:00\",\"hour1\":31.5,\"hour3\":31.5,\"hour6\":31.5,\"hour12\":31.5,\"hour24\":31.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0040\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":34.5,\"hour3\":34.5,\"hour6\":34.5,\"hour12\":34.5,\"hour24\":34.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0138\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":40.5,\"hour3\":40.5,\"hour6\":40.5,\"hour12\":40.5,\"hour24\":40.5,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0139\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":40.5,\"hour3\":40.5,\"hour6\":40.5,\"hour12\":40.5,\"hour24\":40.5,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0140\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":34.5,\"hour3\":34.5,\"hour6\":34.5,\"hour12\":34.5,\"hour24\":34.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0060\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":54,\"hour3\":54,\"hour6\":54,\"hour12\":54,\"hour24\":54,\"level\":1,\"tag\":1},{\"fNum\":\"330727FF0060\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":18.5,\"hour3\":72.5,\"hour6\":72.5,\"hour12\":72.5,\"hour24\":72.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0060\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":9.5,\"hour3\":82,\"hour6\":82,\"hour12\":82,\"hour24\":82,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0060\",\"groupTime\":\"2022-03-14T23:00:00+08:00\",\"hour1\":2,\"hour3\":30,\"hour6\":84,\"hour12\":84,\"hour24\":84,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0060\",\"groupTime\":\"2022-03-15T00:00:00+08:00\",\"hour1\":0.5,\"hour3\":12,\"hour6\":84.5,\"hour12\":84.5,\"hour24\":84.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0060\",\"groupTime\":\"2022-03-15T01:00:00+08:00\",\"hour1\":0,\"hour3\":2.5,\"hour6\":84.5,\"hour12\":84.5,\"hour24\":84.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0115\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":54,\"hour3\":54,\"hour6\":54,\"hour12\":54,\"hour24\":54,\"level\":1,\"tag\":1},{\"fNum\":\"330727FF0115\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":18.5,\"hour3\":72.5,\"hour6\":72.5,\"hour12\":72.5,\"hour24\":72.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0115\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":9.5,\"hour3\":82,\"hour6\":82,\"hour12\":82,\"hour24\":82,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0115\",\"groupTime\":\"2022-03-14T23:00:00+08:00\",\"hour1\":2,\"hour3\":30,\"hour6\":84,\"hour12\":84,\"hour24\":84,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0115\",\"groupTime\":\"2022-03-15T00:00:00+08:00\",\"hour1\":0.5,\"hour3\":12,\"hour6\":84.5,\"hour12\":84.5,\"hour24\":84.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0115\",\"groupTime\":\"2022-03-15T01:00:00+08:00\",\"hour1\":0,\"hour3\":2.5,\"hour6\":84.5,\"hour12\":84.5,\"hour24\":84.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0148\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":54,\"hour3\":54,\"hour6\":54,\"hour12\":54,\"hour24\":54,\"level\":1,\"tag\":1},{\"fNum\":\"330727FF0148\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":18.5,\"hour3\":72.5,\"hour6\":72.5,\"hour12\":72.5,\"hour24\":72.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0148\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":9.5,\"hour3\":82,\"hour6\":82,\"hour12\":82,\"hour24\":82,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0148\",\"groupTime\":\"2022-03-14T23:00:00+08:00\",\"hour1\":2,\"hour3\":30,\"hour6\":84,\"hour12\":84,\"hour24\":84,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0148\",\"groupTime\":\"2022-03-15T00:00:00+08:00\",\"hour1\":0.5,\"hour3\":12,\"hour6\":84.5,\"hour12\":84.5,\"hour24\":84.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0148\",\"groupTime\":\"2022-03-15T01:00:00+08:00\",\"hour1\":0,\"hour3\":2.5,\"hour6\":84.5,\"hour12\":84.5,\"hour24\":84.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0149\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":54,\"hour3\":54,\"hour6\":54,\"hour12\":54,\"hour24\":54,\"level\":1,\"tag\":1},{\"fNum\":\"330727FF0149\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":18.5,\"hour3\":72.5,\"hour6\":72.5,\"hour12\":72.5,\"hour24\":72.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0149\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":9.5,\"hour3\":82,\"hour6\":82,\"hour12\":82,\"hour24\":82,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0149\",\"groupTime\":\"2022-03-14T23:00:00+08:00\",\"hour1\":2,\"hour3\":30,\"hour6\":84,\"hour12\":84,\"hour24\":84,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0149\",\"groupTime\":\"2022-03-15T00:00:00+08:00\",\"hour1\":0.5,\"hour3\":12,\"hour6\":84.5,\"hour12\":84.5,\"hour24\":84.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0149\",\"groupTime\":\"2022-03-15T01:00:00+08:00\",\"hour1\":0,\"hour3\":2.5,\"hour6\":84.5,\"hour12\":84.5,\"hour24\":84.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0171\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":54,\"hour3\":54,\"hour6\":54,\"hour12\":54,\"hour24\":54,\"level\":1,\"tag\":1},{\"fNum\":\"330727FF0171\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":18.5,\"hour3\":72.5,\"hour6\":72.5,\"hour12\":72.5,\"hour24\":72.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0171\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":9.5,\"hour3\":82,\"hour6\":82,\"hour12\":82,\"hour24\":82,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0171\",\"groupTime\":\"2022-03-14T23:00:00+08:00\",\"hour1\":2,\"hour3\":30,\"hour6\":84,\"hour12\":84,\"hour24\":84,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0171\",\"groupTime\":\"2022-03-15T00:00:00+08:00\",\"hour1\":0.5,\"hour3\":12,\"hour6\":84.5,\"hour12\":84.5,\"hour24\":84.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0171\",\"groupTime\":\"2022-03-15T01:00:00+08:00\",\"hour1\":0,\"hour3\":2.5,\"hour6\":84.5,\"hour12\":84.5,\"hour24\":84.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0172\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":54,\"hour3\":54,\"hour6\":54,\"hour12\":54,\"hour24\":54,\"level\":1,\"tag\":1},{\"fNum\":\"330727FF0172\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":18.5,\"hour3\":72.5,\"hour6\":72.5,\"hour12\":72.5,\"hour24\":72.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0172\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":9.5,\"hour3\":82,\"hour6\":82,\"hour12\":82,\"hour24\":82,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0172\",\"groupTime\":\"2022-03-14T23:00:00+08:00\",\"hour1\":2,\"hour3\":30,\"hour6\":84,\"hour12\":84,\"hour24\":84,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0172\",\"groupTime\":\"2022-03-15T00:00:00+08:00\",\"hour1\":0.5,\"hour3\":12,\"hour6\":84.5,\"hour12\":84.5,\"hour24\":84.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0172\",\"groupTime\":\"2022-03-15T01:00:00+08:00\",\"hour1\":0,\"hour3\":2.5,\"hour6\":84.5,\"hour12\":84.5,\"hour24\":84.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0015\",\"groupTime\":\"2022-06-29T19:00:00+08:00\",\"hour1\":39,\"hour3\":45.5,\"hour6\":45.5,\"hour12\":45.5,\"hour24\":45.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0017\",\"groupTime\":\"2022-06-29T19:00:00+08:00\",\"hour1\":52.5,\"hour3\":56.5,\"hour6\":56.5,\"hour12\":56.5,\"hour24\":56.5,\"level\":1,\"tag\":1},{\"fNum\":\"330727FF0017\",\"groupTime\":\"2022-06-29T20:00:00+08:00\",\"hour1\":1,\"hour3\":57.5,\"hour6\":57.5,\"hour12\":57.5,\"hour24\":57.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0024\",\"groupTime\":\"2022-06-29T19:00:00+08:00\",\"hour1\":52.5,\"hour3\":56.5,\"hour6\":56.5,\"hour12\":56.5,\"hour24\":56.5,\"level\":1,\"tag\":1},{\"fNum\":\"330727FF0024\",\"groupTime\":\"2022-06-29T20:00:00+08:00\",\"hour1\":1,\"hour3\":57.5,\"hour6\":57.5,\"hour12\":57.5,\"hour24\":57.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0022\",\"groupTime\":\"2022-06-29T19:00:00+08:00\",\"hour1\":39,\"hour3\":45.5,\"hour6\":45.5,\"hour12\":45.5,\"hour24\":45.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0045\",\"groupTime\":\"2022-06-29T18:00:00+08:00\",\"hour1\":31,\"hour3\":31,\"hour6\":31,\"hour12\":31,\"hour24\":31,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0075\",\"groupTime\":\"2022-06-29T19:00:00+08:00\",\"hour1\":39,\"hour3\":45.5,\"hour6\":45.5,\"hour12\":45.5,\"hour24\":45.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0112\",\"groupTime\":\"2022-06-29T19:00:00+08:00\",\"hour1\":52.5,\"hour3\":56.5,\"hour6\":56.5,\"hour12\":56.5,\"hour24\":56.5,\"level\":1,\"tag\":1},{\"fNum\":\"330727FF0112\",\"groupTime\":\"2022-06-29T20:00:00+08:00\",\"hour1\":1,\"hour3\":57.5,\"hour6\":57.5,\"hour12\":57.5,\"hour24\":57.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0124\",\"groupTime\":\"2022-06-29T19:00:00+08:00\",\"hour1\":39,\"hour3\":45.5,\"hour6\":45.5,\"hour12\":45.5,\"hour24\":45.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0188\",\"groupTime\":\"2022-06-29T19:00:00+08:00\",\"hour1\":40,\"hour3\":48.5,\"hour6\":48.5,\"hour12\":48.5,\"hour24\":48.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0241\",\"groupTime\":\"2022-06-29T19:00:00+08:00\",\"hour1\":39,\"hour3\":45.5,\"hour6\":45.5,\"hour12\":45.5,\"hour24\":45.5,\"level\":3,\"tag\":1}]";
    // 测试数据-排序去重取最新一条
    private static String dataSort = "[{\"fNum\":\"330727FF0047\",\"groupTime\":\"2022-03-14T20:00:00+08:00\",\"hour1\":45,\"hour3\":45,\"hour6\":45,\"hour12\":45,\"hour24\":45,\"level\":2,\"tag\":1},{\"fNum\":\"330727FF0047\",\"groupTime\":\"2022-03-14T21:00:00+08:00\",\"hour1\":26.5,\"hour3\":71.5,\"hour6\":71.5,\"hour12\":71.5,\"hour24\":71.5,\"level\":3,\"tag\":1},{\"fNum\":\"330727FF0047\",\"groupTime\":\"2022-03-14T22:00:00+08:00\",\"hour1\":8.5,\"hour3\":80,\"hour6\":80,\"hour12\":80,\"hour24\":80,\"level\":2,\"tag\":1}]";

    public static void main(String[] args) {
        // 第一种去重方式(根据对象去重)
        distinctData();

        // 第二种去重方式(根据对象字段属性)
        distinctDataByKey();

        // 第三种去重方式(根据对象字段属性)
        distinctDataByKey2();

        // 去重排序获取最新一条数据
        sortData();

        // 去重排序获取最新一条数据
        getDistinctSortList();
    }

    /**
     * 第一种去重方式(根据对象去重)
     */
    public static void distinctData(){
        List<Integer> dataNumber = new ArrayList<>();
        dataNumber.add(1);
        dataNumber.add(2);
        dataNumber.add(3);
        dataNumber.add(1);
        dataNumber = dataNumber.stream().distinct().collect(Collectors.toList());
        System.out.println("第一种去重方式:" + dataNumber);
    }

    /**
     * 第二种去重方式(根据对象字段属性)
     */
    public static void distinctDataByKey(){
        List<RiskForecastDTO> list = JSONArray.parseArray(data, RiskForecastDTO.class);
        if(list.size() >0) {
            // 去重
            list = list.stream().filter(distinctByKey(p -> p.getFNum()))
                    .collect(Collectors.toList());
        }
        System.out.println("第二种去重方式:" + JSON.toJSONString(list));
    }

    /**
     * 根据指定字段去重
     * @param keyExtractor
     * @param <T>
     * @return
     */
    private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
        ConcurrentHashMap<Object, Boolean> map = new ConcurrentHashMap<>();
        return t -> map.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
    }

    /**
     * 根据指定字段去重(参数为null)
     * @param keyExtractor
     * @param <T>
     * @return
     */
    private static <T> Predicate<T> distinctByKeyN(Function<? super T, ?> keyExtractor) {
        ConcurrentHashMap<Object, Boolean> map = new ConcurrentHashMap<>();
        return t -> (keyExtractor.apply(t) != null) ? map.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null : true;
    }

    /**
     * 第三种去重方式(根据对象字段属性)
     */
    public static void distinctDataByKey2(){
        List<RiskForecastDTO> list = JSONArray.parseArray(data,RiskForecastDTO.class);
        ArrayList<RiskForecastDTO> collect = list.stream().collect(Collectors.collectingAndThen(
                Collectors.toCollection(() -> new TreeSet<>(
                        Comparator.comparing(
                                RiskForecastDTO::getFNum))), ArrayList::new));
        System.out.println("第三种去重方式:" + JSON.toJSONString(collect));
    }

    /**
     * 第一种去重并获取最新一条的数据
     */
    public static void sortData(){
        Map<String, RiskForecastDTO> map = new HashMap<>();
        List<RiskForecastDTO> list = JSONArray.parseArray(dataSort,RiskForecastDTO.class);
        if(!list.isEmpty()){
            for (RiskForecastDTO dto : list) {
                if(map.size() == 0) {
                    map.put(dto.getFNum(), dto);
                } else {
                    // 判断是否存在相同的key
                    boolean isEmpty= map.containsKey(dto.getFNum());
                    if(isEmpty){
                        // 原有数据的时间
                        Long oldTime = map.get(dto.getFNum()).getGroupTime().getTime();
                        // 现有数据的时间
                        Long newTime = dto.getGroupTime().getTime();
                        if(newTime - oldTime >0) {
                            map.put(dto.getFNum(), dto);
                        }
                    } else {
                        map.put(dto.getFNum(), dto);
                    }
                }
            }
        }
        System.out.println(JSON.toJSONString(map));

        // map转换为List
        List<RiskForecastDTO> result = new ArrayList(map.values());
        System.out.println(JSON.toJSONString(result));
    }

    /**
     * 第二种去重并获取最新一条的数据
     */
    public static void  getDistinctSortList() {
        List<RiskForecastDTO> list = JSONArray.parseArray(data,RiskForecastDTO.class);
        /*Set<String> result = list.stream().map(p->p.getFNum())
                .collect(Collectors.toSet());
        System.out.println("SET去重:" + JSON.toJSONString(result));*/
        List<RiskForecastDTO> newList = new ArrayList<>();
        //按照时间排序,然后根据风险防范区编号分组,reversed()是反转,升序变为降序,也就是说把最新的数据放到list头部
        Map<String, List<RiskForecastDTO>> map = list.stream().sorted(Comparator.comparing(RiskForecastDTO::getGroupTime).reversed())
                .collect(Collectors.groupingBy(RiskForecastDTO::getFNum));

        for (Map.Entry<String, List<RiskForecastDTO>> entry : map.entrySet()) {
                //取list首并放入到新list中
                newList.add(entry.getValue().get(0));
        }
        System.out.println(JSON.toJSONString(newList));
    }

}
posted @   码奴生来只知道前进~  阅读(438)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示