Java8新特性stream

1、簡要介紹

    Java8,新增stream API,它與Java I/O中的流沒有關係;此stream,用來處理集合數據,可看成一個高級迭代器;Collection接口中,新增非抽象的stream()方法,用來獲取集合的流。

    流的操作是內部迭代的,傳統開發中使用的for循環、迭代器屬於外部迭代。不太理想的是,java8中內部迭代的性能還是略差,有待提升。

    特別注意:流只能使用一次,使用之後,流也就會廢掉。

2、代碼舉例

package com.list;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author liuxd
 * @version 1.0
 * @date 2019-12-12 14:29
 */
public class TestListStream {

    public static void main(String[] args) {
        List<User> list = new ArrayList<>();
        User user1 = new User("張三", 22, "男");
        User user2 = new User("李四", 16, "男");
        User user3 = new User("莉莉", 17, "女");
        User user4 = new User("美美", 19, "女");
        User user5 = new User("張聰", 24, "男");
        User user6 = new User("李玲", 22, "男");
        list.add(user1);
        list.add(user2);
        list.add(user3);
        list.add(user4);
        list.add(user5);
        list.add(user6);

        List<User> newList = new ArrayList<>(6);

        /**
         * 第一、傳統方式過濾排序
         */
        //遍歷集合,提取大於等於18歲用戶存放至newList中
        for (User s : list) {
            if (s.getAge() >= 18) {
                newList.add(s);
            }
        }
        //對newList按照年齡進行降序排序
        newList.sort(new Comparator<User>() {
            @Override
            public int compare(User s1, User s2) {
                //降序排序
                return Integer.compare(s2.getAge(), s1.getAge());
            }
        });

        System.out.println(newList);

        /*
         *第二、使用stream的寫法
         * 1、獲取List的stream對象
         * 2、使用filter方法進行過濾
         * 3、使用sorted方法進行排序
         * 4、使用collect方法將處理好的stream對象轉換爲集合對象
         */
        newList = list.stream()
                .filter(s -> s.getAge() >= 18)
                .sorted(Comparator.comparing(User::getAge).reversed())
                .collect(Collectors.toList());
        System.out.println(newList);

    }

}

 

發佈了330 篇原創文章 · 獲贊 234 · 訪問量 40萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章