-
2022-03-08 18:18:19
两个list直接可以根据两个list中相同的字段直接查询出需要的值
public List<BuildingUnitHouseListVO> getBuildingUnitHouseListVO(String buildCode) { List<BuildingUnitHouseListVO> listVOS=new ArrayList<>(); List<BuildingUnitVO> buildingUnitVO = buildingHouseMapper.getBuildingUnitVO(buildCode); List<BuildingUnitHouseVO> buildingUnitHouseVO = buildingHouseMapper.getBuildingUnitHouseVO(buildCode); for (BuildingUnitVO buildingUnit:buildingUnitVO){ BuildingUnitHouseListVO buildingUnitHouseListVO=new BuildingUnitHouseListVO(); List<BuildingUnitHouseVO> collect = buildingUnitHouseVO.stream().filter(s -> s.getUnit().equals(buildingUnit.getUnit()) && s.getFloor().equals(buildingUnit.getFloor())).collect(Collectors.toList()); buildingUnitHouseListVO.setBuildingUnitHouseVOList(collect); buildingUnitHouseListVO.setUnit(buildingUnit.getUnit()); buildingUnitHouseListVO.setFloor(buildingUnit.getFloor()); listVOS.add(buildingUnitHouseListVO); } return listVOS; }
更多相关内容 -
mysql中合并两个字段的方法分享
2020-09-11 01:14:47mysql中怎么合并两个字段为一个字段呢?试了好多方法,结果还是不是我想要的 -
两个List集合取相同重复数据的方法
2020-08-26 15:10:54今天小编就为大家分享一篇关于两个List集合取相同重复数据的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 -
java8将list中实体类的两个字段转为Map
2021-02-23 21:55:02List<User> list = new ArrayList<>(); Map<Integer, String> map = list.stream().collect(Collectors.toMap(User::getId, User::getType));List<User> list = new ArrayList<>(); Map<Integer, String> map = list.stream().collect(Collectors.toMap(User::getId, User::getType));
-
Java 两个list数据根据某个字段合并
2021-03-10 00:02:31之前遇到一个需求,字段是每小时那种(2018101208)。然后服务给我数据少了部分。然后我需要自已推算。...两个list根据某个字段进行合并。1、获取过去15天的小时初始化变量public String start_ts = "1537...之前遇到一个需求,字段是每小时那种(2018101208)。然后服务给我数据少了部分。然后我需要自已推算。然后补上没有那些小时为单位的数据。这里面也涉及到了自已设计出来数据list是全面的。所有的小时都有。然后把服务器获取list根据这个进行对比,补上服务器没有的小时数。两个list根据某个字段进行合并。
1、获取过去15天的小时
初始化变量
public String start_ts = "1537812000000";
//解析出来历史数据
private ListhistoryDataList = new ArrayList<>();
//自已推算的历史数据
private ListcalculateDataList = new ArrayList<>();
获取系统当前时间,推算15天前这个时间,然后把每小时存在List里面。这也是一个小小的算法。
public void SetContext(Context context) {
if (mContext != null) mContext.clear();
mContext = new WeakReference(context);
long time = System.currentTimeMillis();
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHH");
String strNow = df.format(time);
time = dateConvertMillionSec(strNow);
//获取当前时间,减去24小时。就是获取过去一天每小时的数据
long tempTime = 1000 * 60 * 60 * 24 * 15L;
start_ts = String.valueOf(time - tempTime);
for (int j = 1; j < 15; j++) {
for (int i = 1; i < 25; i++) {
calculateDataList.add(df.format(time - 1000 * 60 * 60 * j * i));
}
}
}
private long dateConvertMillionSec(String str) {
long millionSeconds = 0;
try {
millionSeconds = new SimpleDateFormat("yyyyMMddHH").parse(str).getTime();
} catch (ParseException e) {
e.printStackTrace();
}
return millionSeconds;
}
2、两个list根据时间字段合并
方法一,利用list里面带有contains方法进行字段比较。把找出来List里面没有数据;放到List里面HistoryData里面字段里面。
for (String temp : calculateDataList) {
if (!tempList.contains(temp)) {
HistoryData historyData = new HistoryData();
historyData.setDatetime(temp);
historyDataList.add(historyData);
}
}
方法二、两个for循环遍历也是可以搞定的。
for (String temp : calculateDataList) {
boolean flag = false;
for (HistoryData historyData : historyDataList) {
if (temp.equals(historyData.getDatetime())) {
flag = true;
break;
}
}
if (!flag) {
HistoryData historyData = new HistoryData();
historyData.setDatetime(temp);
historyDataList.add(historyData);
}
}
3、最后附带一个list的排序方法,按时间排序
Collections.sort(historyDataList, new Comparator() {
@Override
public int compare(HistoryData temp1, HistoryData temp2) {
//可以按User对象的其他属性排序,只要属性支持compareTo方法
Integer it1 = Integer.valueOf(temp1.getDatetime());
Integer it2 = Integer.valueOf(temp2.getDatetime());
return it1.compareTo(it2);
}
});
-
Java 将两个对象list里面的 某个字段值抽取到一个list里
2021-09-05 09:35:33现在想把两个List里面的 room 的id 都抽取出来,放在一个List里面 。 实现代码: List<Integer> idList = Stream.concat(rooms1.stream().map(Room::getId), rooms2.stream().map(Room::getId))....场景举例:
两个List(rooms1 和 rooms2)里面放的对象都是 Room ,现在想把两个List里面的 room 的id 都抽取出来,放在一个List里面 。
实现代码:List<Integer> idList = Stream.concat(rooms1.stream().map(Room::getId), rooms2.stream().map(Room::getId)).collect(Collectors.toList());
或
List<Integer> idList = Stream.of(rooms1, rooms2).flatMap(List::stream).map(Room::getId).collect(Collectors.toList());
例子:
import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; /** * @Author JCccc * @Description * @Date 2021/8/20 9:05 */ public class Room { private Integer id; private String name; private Short type; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Short getType() { return type; } public void setType(Short type) { this.type = type; } public static void main(String[] args) { List<Room> rooms1=new ArrayList<>(); Room roomA=new Room(); roomA.setId(1); roomA.setName("1-A"); roomA.setType((short)1); Room roomB=new Room(); roomB.setId(2); roomB.setName("2-A"); roomB.setType((short)1); rooms1.add(roomA); rooms1.add(roomB); List<Room> rooms2=new ArrayList<>(); Room roomC=new Room(); roomC.setId(3); roomC.setName("3-C"); roomC.setType((short)2); Room roomD=new Room(); roomD.setId(4); roomD.setName("4-D"); roomD.setType((short)2); rooms2.add(roomC); rooms2.add(roomD); //去重set (注意真正操作时需要对俩list做判空校验) List<Integer> idList=new ArrayList<>(Stream.concat(rooms1.stream().map(Room::getId), rooms2.stream().map(Room::getId)).collect(Collectors.toSet())); //去重set (注意真正操作时需要对俩list做判空校验) List<Integer> idList=new ArrayList<>( Stream.of(rooms1, rooms2).flatMap(List::stream).map(Room::getId).collect(Collectors.toSet())); //不去重list // List<Integer> idList = Stream.concat(rooms1.stream().map(Room::getId), rooms2.stream().map(Room::getId)).collect(Collectors.toList()); System.out.println(idList.toString()); } }
输出结果:
ps:
同样,如果来自一个List的两个值,也想抽出来放到一个list里面去:只需要做点小改动,
List<Room> rooms1=new ArrayList<>(); Room roomA=new Room(); roomA.setId(1); roomA.setName("1-A"); roomA.setType((short)1); roomA.setFid(5); Room roomB=new Room(); roomB.setId(2); roomB.setName("2-A"); roomB.setType((short)1); roomB.setFid(10); rooms1.add(roomA); rooms1.add(roomB); List<Integer> idList = Stream.concat(rooms1.stream().map(Room::getId), rooms1.stream().map(Room::getFid)).collect(Collectors.toList());
-
java8中使用Lambda表达式将list中实体类的两个字段转Map
2020-09-28 09:34:01java8中使用Lambda表达式将list中实体类的两个字段转Map 昨天一个面试官问我这个问题,当时没回答上来,现在给出代码: package com.yang.leetcode.temp; import java.util.ArrayList; import java.util.List; ... -
JAVA8 Stream 多个对象List中的指定字段抽取到一个List中
2022-02-15 10:40:39⏹JAVA8 Stream 多个对象List中的指定字段抽取到一个List中 -
java8的stream和lamda获取list集合中的某几个字段组成新的list
2021-03-18 10:01:12@Data @AllArgsConstructor @NoArgsConstructor public class StudentOne ... List newList = list.stream().map(e -> new StudentTwo(e.getName(), e.getCity())).collect(Collectors.toList()); return newList; } }; -
java中list数组排序问题 List中Map数组根据map中两个或多个字段排序
2020-06-29 11:34:30工作中有个需求,list数组先根据相似度值排序,然后再按照名称的长度排序,由大到小降序。 使用到JAVA8的特性,特此记录一下: 不多说,先上代码: private List<Map<String, Object>> sortList... -
Lamda表达式使用,从一个List1中获取一个字段,加入到List2的DTO中,两个List有一个关联字段
2019-11-27 14:36:56将需要取字段的List,以关联字段为key,List中的实体为value,转为Map List<XDTO> respList=null; Map<Integer,XDTO> map=respList.stream().collect(Collectors.toMap(i->i.getId(),i->i)); 2.... -
List根据对象的两个字段进行排序,并且有一个倒序
2020-07-22 15:57:40list 排序涉及的接口 Comparator, 具体实现代码如下,以Apple类为例 public class Test { public static void main(String [] args){ List<Apple> apples = new ArrayList<>(); Comparator<Apple&... -
Java 将List中所有item中的某一个字段值提出来生成一个新的List
2021-01-27 06:34:33例如:publicclassA{privateStringa1;privateStringa2;各元素的get(),set()方法略...}listas;...将as中的所有...例如:public class A{private String a1;private String a2;各元素的get(),set()方法 略... -
Java8使用stream操作两个list根据某字段匹配再对其中一个list进行赋值
2021-11-24 22:23:31import lombok.extern.slf4j.Slf4j; import java.lang.reflect.Field; import java.util.*; import java.util.stream.Collectors;... * lambda表达式对两个List进行循环,根据符合条件,进行相关的赋值操作并 -
stream对比两个list根据字段查询出不同得值
2022-01-21 17:01:55工作需要 要查出来两个list对象得差值 是根据其中一个字段的 正好这段时间再用stream 就试了一下 //需要求相同的只需要把第二行!去掉就行 List<AlarmComparisonDto> collect = lastWeekHostAlarmNum.stream... -
list集合中指定字段去重
2021-02-27 09:57:14在开发中,有时会需要指定字段去重,以下为实现方法:假设有个房地产权的类,其中宗地代码ZDDM值重复,而我们在前端页面显示时,只需要一条数据,因为公共字段都一样;IEqualityComparer需引入程序集——using System... -
Java对比两个list并找出其中不同的值(list里面的具体类单独抽出不同字段)
2020-12-22 16:58:47今天凯哥交给我一个任务,在报警模版中对比新旧两个数据,找出其中不同的部分,之前是把不同的数据转string做了对比,并没有对list中的对象做判断,修改完之后记录一下。list做对比,如果 list 里面的数据是乱序的,... -
java8 集合 多字段 分组 统计个数代码
2020-09-07 18:58:57主要介绍了java8 集合 多字段 分组 统计个数代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
Java8 stream 提取 List 中元素的某一字段生成新的 List
2022-04-01 16:04:58Java8 stream List -
获取两个list元素的交集
2019-10-28 17:31:50import java.util.ArrayList;...import java.util.List; public class I { public static void main(String[] args) { List<Integer> list1 = new ArrayList<Integer>(); for (... -
【C#】Linq获取一个对象下的list对象,再之下的list对象中的某字段所有数据
2019-05-21 22:24:35实际开发中,遇到一个问题,即在某个对象下的list下,还有list,再获取某个字段的所有数据,类结构层级如下: public sealed class accountbooks { public DateTime CreateDate { get; set; } public string ... -
java从数据库读取两个字段存储到map中
2018-10-24 15:42:39如何从数据库读取两个字段存储到map中 之前自己一直接触的仅仅需要从数据库读取一个字段到java中,因此只需要定义一个动态数组ArrayList,将ResultSet中的结果存储到该动态数组中即可。而现在需要从数据库读入两个... -
Java8 Stream对两个 List 遍历匹配数据的优化处理操作
2021-03-13 18:17:35使用场景,有两个List>集合,第一个集合的所有元素都是需要保留的。第一个集合的值为:{name=张三丰1, id=1}{name=张三丰2, id=2}{name=张三丰3, id=3}{name=张三丰4, id=4}{name=张三丰5, id=5}{name=张三丰6, ... -
java8中List根据某一字段去重
2021-09-29 14:25:47java8中List根据某一字段去重 @Data @AllArgsConstructor @NoArgsConstructor @ToString public class User { private String userid; private String username; private String age; private String address; ... -
stream把集合中类的两个字段转成map
2021-11-06 17:37:07map = list.stream().collect(Collectors.toMap(Entity::getId, Entity::getType)); 以上可能会可能会报错,(value为null), 一般我都写成这样: Map<Integer, String> map = list.stream().collect... -
java8 从一个List中提取出集合中对象的某个字段的集合,并去重不打乱顺序
2020-10-30 16:20:19java8 从一个List中提取出集合中对象的某个字段的集合语法: 说明:提取personAchieveMentList集合中对象的targetType字段的集合(此处没有去除重复,对象的集合有多少条数据,字段的集合就有多少条数据) List ... -
java8 List 根据对象某个字段或多个字段去重、筛选、List转Map、排序、分组、统计计数等等
2021-03-08 17:00:44简单示例如下:先定义一个订单对象(Order)public class Order {private Long id;private Long userId;private String num;private String type;private Float allAmt;private Float payAmt;priva... -
Java从List中取出某个字段重新组装为List
2020-02-13 20:28:47//查询设备 List<NodeDataBean> dviceList = gojsServiceImpl.getDvices(sysId); //取设备id List<String> keyList = dviceList.stream().map(e -> e.getId()).collect(Collectors...