java 數據類型:Stream流 對象轉換為集合collect(Collectors.toList()) ;常用方法count,limit,skip,concat,max,min


集合對象.stream() 獲取流對象,對元素批處理(不改變原集合)

集合元素循環除了用for循環取出,還有更優雅的方式.forEach

示例List集合獲取Stream對象進行元素批處理

import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName ArrayListStreamExample
 * @projectName: object1
 * @author: Zhangmingda
 * @description: XXX
 * date: 2021/4/11.
 */
public class ArrayListStreamExample {
    public static void main(String[] args) {
        List<String> persons = new ArrayList<>();
        persons.add("李一桐");
        persons.add("劉亦菲");
        persons.add("鞠婧禕");
        persons.add("李易峰");
        persons.add("李純");
        persons.add("李小璐");
        persons.add("李健");
        persons.add("李連傑");
        //
        persons.stream().filter(o -> o.startsWith("李")).filter(o -> o.length() >=3).forEach(System.out::println);
        List<String> liPerson = new ArrayList<>();
        persons.stream().filter(o -> o.startsWith("李")).filter(o -> o.length() >=3).forEach(o -> liPerson.add(o));
        System.out.println(liPerson); // [李一桐, 李易峰, 李小璐, 李連傑]
    }
}

 常用方法:

Map映射

如果需要將流中的元素映射到另一個流中,可以使用 map 方法。
<R> Stream<R> map(Function<? super T, ? extends R> mapper)
Function是一個函數式接口,他有一個R apply(T t);方法,可以把T對象轉化成R對象。這個就叫做映射。

 

  • 統計個數Count
  • 獲取前幾個Limit
  • 跳過前幾個Skip
  • 組合concat
  • 最大最小值
    常用方法示例代碼:
    import java.util.stream.Stream;
    
    /**
     * @ClassName StreamFuncExample
     * @projectName: object1
     * @author: Zhangmingda
     * @description: XXX
     * date: 2021/4/12.
     */
    public class StreamFuncExample {
        public static void main(String[] args) {
            Stream.of(1,2,3).map(num ->num *2).forEach(System.out::println); //映射輸出2、4、6
            long count = Stream.of(1,3,4,5).count(); //統計個數
            System.out.println(count);
            Stream.of(1,2,3,4,5,6).limit(3).forEach(System.out::println);//前三個
            Stream.of(1,2,3,4,5,6).skip(3).forEach(System.out::println);//跳過前三個
            Stream<Integer> num = Stream.of(1,2,3);
            Stream<String> person = Stream.of("張三","李四","王五");
            Stream allStream = Stream.concat(num,person);
            allStream.forEach(System.out::println); //1,2,3, 張三","李四","王五"
            int max = Stream.of(1,2,3,4,5,6).max((num1, num2) -> num1 - num2).get(); //取最大
            System.out.println(max); //6
        }
    }
 

Stream對象轉換為集合

collect(Collectors.toList())  

collect(Collectors.toSet())

collect(Collectors.toMap())

 

public class StreamCollectCollectorsXXX {
    public static void main(String[] args) {
        Stream<String> persons = Stream.of("張三","李四","王五");
//        List<String> personList  = persons.collect(Collectors.toList());
//        Set<String> personSet  = persons.collect(Collectors.toSet());
        Map<String,Integer> personMap  = persons.collect(Collectors.toMap( K ->K, K ->K.length()));
        System.out.println(personMap);
    }
}

 

 

 


免責聲明!

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



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