使用过滤器,流进行过滤,并在一行中进行过滤

时间:2019-09-09 03:23:30

标签: java java-8 java-stream

地理编码主体是一个包含位置作为实体的类,它又是一个包含地址类的类,而地址包含纬度和经度。如何获取每个位置的纬度和经度并将其添加到停靠点

List<Location> geoList = geocodeBody.getLocations().stream()
           .filter(s-> StringUtils.isNotEmpty(lon=s.getAddress().getLon()) && 
                StringUtils.isNotEmpty(lat=s.getAddress().getLat()))
           .collect(Collectors.toList());
//Need to add latitude and logitude for each stops
geoList.forEach((Stops)->{
     Stops.add(lat); // adding latitude
     Stops.add(lon); // adding longitude
});         

1 个答案:

答案 0 :(得分:0)

首先进行过滤,然后可以按照需要的方式添加经度和纬度:

geocodeBody.getLocations().stream()
.filter(location -> 
    location.getAddress() != null 
    && StringUtils.isNotEmpty(location.getAddress().getLon())
    && StringUtils.isNotEmpty(location.getAddress().getLat())
).forEach(location -> {
      Stops.add(location.getAddress().getLat()); // adding latitude
      Stops.add(location.getAddress().getLon()); // adding longitude
    });