jdk8 lambada 個人專案中的一些應用
阿新 • • 發佈:2018-12-31
從List物件陣列中獲取實體類的某個值:
List<User> userList; List<Long> userIdList = userList.stream().map(u -> u.getId()).collect(Collectors.toList());
從List物件陣列中過濾掉不符合條件的值: filter()中,如果符合條件就返回true保留,不符合條件返回false 去除。(可以用三目運算子進行復雜的操作)
獲取年齡大於等於25 且性別為男的使用者
List<User> userfilterList = userList.stream().filter((u) -> u.getAge() >= 25 ? false:u.getSex().equals("男"):false:true) .collect(Collectors.toList());
從List物件陣列中處理物件某個屬性或者重建一個新的物件:
List<Child> childList = userList.stream().map(e -> convertItem(e)).collect(Collectors.toList());
public static child convertItem(User user) { return InstanceUtil.to(user, Child.class); }
public final class InstanceUtil { private InstanceUtil() { } /** 例項化並複製屬性 */ public static final <T> T to(Object orig, Class<T> clazz) { T bean = null; try { bean = clazz.newInstance(); PropertyUtils.copyProperties(bean, orig); } catch (Exception e) { } return bean; }
從List物件陣列中,計算總金額
BigDecimal countPrice = userList.stream().map((u) -> u.getPrice()).reduce((sum,u) -> sum.add(p)).get();
獲取最大最小值: 通過mix()方法求出最小值的物件,在通過get得到物件,使用getPrice獲取到物件的價格
BigDecimal minPrice = list.stream().min((u1, u2) -> (u1.getPrice().compareTo(u2.getPrice()))).get().getPrice(); BigDecimal maxPrice = list.stream().max((u1, u2) -> (u1.getPrice().compareTo(u2.getPrice()))).get().getPrice();
組合使用
BigDecimal countPrice = userList.stream().filter((u) -> u.getSex().equals("男")).map((u1) -> u1.getPrice()).reduce((sum,u1) -> sum+u1).get();