精华内容
下载资源
问答
  • 两个list直接可以根据两个list中相同的字段直接查询出需要的值
    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怎么合并两个字段为一个字段呢?试了好多方法,结果还是不是我想要的
  • 今天小编就为大家分享一篇关于两个List集合取相同重复数据的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • List<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);

    }

    });

    展开全文
  • 现在想把两个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 昨天一个面试官问我这个问题,当时没回答上来,现在给出代码: package com.yang.leetcode.temp; import java.util.ArrayList; import java.util.List; ...
  • ⏹JAVA8 Stream 多对象List中的指定字段抽取到一个List中
  • @Data @AllArgsConstructor @NoArgsConstructor public class StudentOne ... List newList = list.stream().map(e -> new StudentTwo(e.getName(), e.getCity())).collect(Collectors.toList()); return newList; } };
  • 工作需求,list数组先根据相似度值排序,然后再按照名称的长度排序,由大到小降序。 使用到JAVA8的特性,特此记录一下: 不多说,先上代码: private List<Map<String, Object>> sortList...
  • 将需要取字段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 排序涉及的接口 Comparator, 具体实现代码如下,以Apple类为例 public class Test { public static void main(String [] args){ List<Apple> apples = new ArrayList<>(); Comparator<Apple&...
  • 例如:publicclassA{privateStringa1;privateStringa2;各元素的get(),set()方法略...}listas;...将as的所有...例如:public class A{private String a1;private String a2;各元素的get(),set()方法 略...
  • import lombok.extern.slf4j.Slf4j; import java.lang.reflect.Field; import java.util.*; import java.util.stream.Collectors;... * lambda表达式对两个List进行循环,根据符合条件,进行相关的赋值操作并
  • 工作需要 要查出来两个list对象得差值 是根据其中一个字段的 正好这段时间再用stream 就试了一下 //需要求相同的只需要把第二行!去掉就行 List<AlarmComparisonDto> collect = lastWeekHostAlarmNum.stream...
  • list集合指定字段去重

    千次阅读 2021-02-27 09:57:14
    在开发,有时会需要指定字段去重,以下为实现方法:假设有房地产权的类,其中宗地代码ZDDM值重复,而我们在前端页面显示时,只需要一条数据,因为公共字段都一样;IEqualityComparer需引入程序集——using System...
  • 今天凯哥交给我一个任务,在报警模版对比新旧两个数据,找出其中不同的部分,之前是把不同的数据转string做了对比,并没有对list中的对象做判断,修改完之后记录一下。list做对比,如果 list 里面的数据是乱序的,...
  • 主要介绍了java8 集合 多字段 分组 统计数代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Java8 stream List
  • 获取两个list元素的交集

    千次阅读 2019-10-28 17:31:50
    import java.util.ArrayList;...import java.util.List; public class I { public static void main(String[] args) { List<Integer> list1 = new ArrayList<Integer>(); for (...
  • 实际开发,遇到一问题,即在某个对象下的list下,还有list,再获取某个字段的所有数据,类结构层级如下: public sealed class accountbooks { public DateTime CreateDate { get; set; } public string ...
  • 如何从数据库读取两个字段存储到map 之前自己一直接触的仅仅需要从数据库读取一个字段到java,因此只需要定义一个动态数组ArrayList,将ResultSet的结果存储到该动态数组即可。而现在需要从数据库读入两个...
  • 使用场景,有两个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根据某一字段去重 @Data @AllArgsConstructor @NoArgsConstructor @ToString public class User { private String userid; private String username; private String age; private String address; ...
  • map = list.stream().collect(Collectors.toMap(Entity::getId, Entity::getType)); 以上可能会可能会报错,(value为null), 一般我都写成这样: Map<Integer, String> map = list.stream().collect...
  • java8 从一个List中提取出集合对象的某个字段的集合语法: 说明:提取personAchieveMentList集合对象的targetType字段的集合(此处没有去除重复,对象的集合有多少条数据,字段的集合就有多少条数据) List ...
  • 简单示例如下:先定义一订单对象(Order)public class Order {private Long id;private Long userId;private String num;private String type;private Float allAmt;private Float payAmt;priva...
  • //查询设备 List<NodeDataBean> dviceList = gojsServiceImpl.getDvices(sysId); //取设备id List<String> keyList = dviceList.stream().map(e -> e.getId()).collect(Collectors...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 296,785
精华内容 118,714
关键字:

获取list中的两个字段