Tuesday, March 15, 2016

Mengecek nilai atribut dalam List of object di dalam List dengan lambda expression

Seringkali kita mengalami kasus dimana harus memvalidasi input value dari atribut List of object di dalam sebuah List yang masuk sebelum di proses.
Sebagai contoh terdapat 3 object yang saling berkaitan :
RateRequestVO
public class RateRequestVO extends BaseVO { 
   private String email;  
   private List<OrderRateVO> orders; 
//getter setter
}
OrderRateVO :
public class OrderRateVO {
   private String orderId;
   private List<RateVO> rates;

//getter setter
}
RateVO :
public class RateVO {
   private String param;
   private Double rate;

//getter setter
}
Case :
Input adalah OrderRequestVO
Setiap request yang masuk harus mengecek nilai rate (di RateVO) tidak boleh negatif.
DI java sebelum nya kita harus melakukan loop berulang dan mengecek setiap objectnya, namun di Java 8, dengan lamda expression, permasalahan-permasalahan seperti ini bisa diselesaikan hanya dalam 1 baris.
Berikut merupakan contoh code nya :
boolean containNullNegative = vo.getOrders().stream().allMatch(
       a -> a.getRates().stream().anyMatch(rate -> rate.getRate() <= 0)
);

selamat mencoba, happy coding ^^v

No comments:

Post a Comment