1. 程式人生 > >java 8 stream學習整理

java 8 stream學習整理

1、什麼是stream:

Stream 使用一種類似用 SQL 語句從資料庫查詢資料的直觀方式來提供一種對 Java 集合運算和表達的高階抽象。

這種風格將要處理的元素集合看作一種流, 流在管道中傳輸, 並且可以在管道的節點上進行處理, 比如篩選, 排序,聚合等。

元素流在管道中經過中間操作(intermediate operation)的處理,最後由最終操作(terminal operation)得到前面處理的結果。

 

 

 

2、常用的流操作:

2.1、map:map 方法用於對映每個元素到對應的結果。

List物件轉List<Long>

@Slf4j
public class Streamdemo {
    
    public static List<User> createList() {

        User user = new User(1L, "by", 18, "音樂");
        User user1 = new User(2L, "gz", 26, "音樂");
        User user2 = new User(3L, "aby", 19, "旅行");
        List<User> userList = Lists.newArrayList(user, user1, user2);
        
return userList; } public static void main(String[] args) { List<User> userList = createList(); // List物件轉List<Long> List<Long> longList = userList.stream().map(o->o.getId()).collect(Collectors.toList()); log.info("longList"+longList); } }

 

2.2、filter:filter 方法用於通過設定的條件過濾出元素。

 

2.3 Collectors : Collectors 類實現了很多歸約操作。

2.31、List轉Map

@Slf4j
public class Streamdemo {


    public static List<User> createList() {

        User user = new User(1L, "by", 18, "音樂");
        User user1 = new User(2L, "gz", 26, "音樂");
        User user2 = new User(3L, "aby", 19, "旅行");
        List<User> userList = Lists.newArrayList(user, user1, user2);
        return userList;

    }

    public static void main(String[] args) {

        List<User> userList = createList();

        //key = id , value = userName
        Map<Long, String> lsMap = userList.stream().collect(Collectors.toMap(User::getId, User::getUserName));
        log.info("lsMap" + lsMap);

        //key = userName , value = love
        Map<String, String> ssMap = userList.stream().collect(Collectors.toMap(o -> o.getUserName(), o -> o.getLove()));
        log.info("ssMap" + ssMap);

        //key = id , value = User
        Map<Long, User> luMap = userList.stream().collect(Collectors.toMap(o -> o.getId(), o -> o));
        log.info("luMap" + luMap);

        //key = love + userName , value = User
        Map<String,User> map = new HashMap<>(16);
        userList.forEach(o->{
            map.put(o.getLove()+o.getUserName(),o);
        });

    }