Java通过steam实现数据去重、去重获取最新一条
目录
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));
}
}
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现