1. 程式人生 > >jdk8 lambada 個人專案中的一些應用

jdk8 lambada 個人專案中的一些應用

從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();