如何使用java封装List集合相同的元素,封装一个函数进行调用,奉献上具体实现的代码;关键是如何将list转换成 Map<String,List<Historylocation>> map3=new HashMap<>();进行存储

shanewds 发布于 2018/03/13 09:33
阅读 251
收藏 1


        List<Historylocation> list= Arrays.asList(
                new Historylocation(12l, 10), 
                new Historylocation(12l, 13),
                new Historylocation(12l, 14),
                new Historylocation(21l, 17),
                new Historylocation(21l, 20), 
                new Historylocation(27l, 23));
        Map<Long,Float> map=new HashMap<>();
        map.put(12l,1f);
        map.put(21l,2f);
     根据Map集合的key进行返回list集合中相同key的新的list集合;进行封装成一个函数进行调用.如若获取key值等于12l的,则返回类似于
         List<Historylocation> list= new Arraylist(
                new Historylocation(12l, 10), 
                new Historylocation(12l, 13),
                new Historylocation(12l, 14)}

 

关键是如何将list转换成 Map<String,List<Historylocation>>  map3=new HashMap<>();进行存储?JDK1.7
        
  实体类 

public class Historylocation {
    private Long id;

    private Long datatime;

    private Long buildid;

    private String mac;

    private float axisx;

    private float axisy;

    private float axisz;

    private Integer floorid;

}

加载中
0
李李安安
李李安安
将list装换成map,然后再进行循环匹配
0
Beyond-Bit
Beyond-Bit

Map<String,List<String>>  map

0
CasparLi
CasparLi

emmmmm 这样???

 


class Temp {
    @Test
    void tempTest() {
        List<Historylocation> list = List.of(new Historylocation(12L, 10),
                                             new Historylocation(12L, 13),
                                             new Historylocation(12L, 14),
                                             new Historylocation(21L, 17),
                                             new Historylocation(21L, 20),
                                             new Historylocation(27L, 23));

        Map<Long, Float> map = new HashMap<>();
        map.put(12L, 1F);
        map.put(21L, 2F);

        Map<Long, List<Historylocation>> map3 = new HashMap<>();
        map.keySet().forEach(key -> map3.put(key,
                                             list.stream().filter(item -> key == item.getA()).collect(Collectors.toList())));
    }
}

class Historylocation {
    private long a;
    private int  b;

    Historylocation(long a, int b) {
        this.a = a;
        this.b = b;
    }

    public long getA() {
        return a;
    }

    public int getB() {
        return b;
    }
}

 

0
shanewds
shanewds

@CasparLi 经过运行测试可以实现。JDK1.8不熟.

能否使用jdk1.7实现

返回顶部
顶部