java8中Stream數據流


篩選重復的元素

Stream 接口支持 distinct 的方法, 它會返回一個元素(根據流所生成元素的 hashCode和equals方法實現)的流。

例如,以下代碼會篩選出列表中所有的偶數,並確保沒有 重復。

List<Dish> dishes = Dish.menu.stream()
.filter(Dish::isVegetarian)
.collect(Collectors.toList());

跳過指定數量的元素

Stream 支持 skip(n) 方法,返回一個扔掉了前n個元素的流。如果流中元素不足n個,則返回一 個空流。limit(n) 和 skip(n) 是互補的

List<Dish> dishSkip = Dish.menu.stream().filter(d -> d.getCalories() > 300).skip(2) //去掉符合要求的集合中的前2個元素后返回
.collect(Collectors.toList());
dishSkip.forEach(System.out::println);
 

map 操作

Stream 支持 map 方法,它會接受一個函數作為參數。這個函數會被應用到每個元素上,並將其映 射成一個新的元素

List<String> list = st.skip(0).limit(2).map(s->s.toUpperCase()).collect(Collectors.toList());

元素求和

List<Integer> numbers = Arrays.asList(3,4,5,1,2);
int sum1 = numbers.stream().reduce(0,(a, b) -> a + b);
System.out.println(sum1);
 
int sum2 = numbers.stream().reduce(0,Integer::sum);
System.out.println(sum2);

最大值

int max = numbers.stream().reduce(0,Integer::max);
System.out.println(max);

最小值

//reduce不接受初始值,返回一個Optional對象(考慮流中沒有任何元素的情況)
Optional<Integer> min = numbers.stream().reduce(Integer::min);
min.ifPresent(System.out::println);
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM