PDA

View Full Version : یافتن مقدار ماکزیمم و مینیموم یک آبجکت در یک لیست پیوندی به صورت ژنریک متد



farhad_shiri_ex
سه شنبه 18 اردیبهشت 1397, 00:28 صبح
با سلام
برای یافتن یک مقدار Max ویا Min یک مدل کلاس براساس الگوی Compare خودتون در لیست های پیوندی به صورت یک متد ژنریک از متد های زیر استفاده نمایید.

public <E extends Comparable<? super E>> E max(List<? extends E> list, boolean sorted) {
Stream<? extends E> stream = list.stream();
Optional<E> optional = stream
.sorted()
.collect(Collectors.maxBy((o1, o2) ->
sorted ? o1.compareTo(o2) == 1 ? 0 : 1
: o1.compareTo(o2)));
return optional.isPresent() ? optional.get() : list.get(0) ;
}

واینهم Min

public <E extends Comparable<? super E>> E min(List<? extends E> list, boolean sorted) {
Stream<? extends E> stream = list.stream();
Optional<E> optional = stream
.collect(Collectors.minBy((o1, o2) ->
sorted ? o1.compareTo(o2) == -1 ? 0 : 1
: o1.compareTo(o2)));
return optional.isPresent() ? optional.get() : list.get(0) ;
}


البته همونطور که عرض کردم حتما در کلاسی که به لیست متصل کردید اینترفیس Comparable را پیاده سازی نمایید.
مثل این متد...

@Override
public int compareTo(@NonNull modelDao o) {
return o.weight > this.weight ? 1 : o.weight < this.weight ? -1 : 0 ;
}

حتما باید از جاوا 8 به بعد کامپایل کنید.