日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Stream流中间操作方法

發布時間:2024/4/13 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Stream流中间操作方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 概念

    中間操作的意思是,執行完此方法之后,Stream流依然可以繼續執行其他操作。

  • 常見方法

    方法名說明
    Stream<T> filter(Predicate predicate)用于對流中的數據進行過濾
    Stream<T> limit(long maxSize)返回此流中的元素組成的流,截取前指定參數個數的數據
    Stream<T> skip(long n)跳過指定參數個數的數據,返回由該流的剩余元素組成的流
    static <T> Stream<T> concat(Stream a, Stream b)合并a和b兩個流為一個流
    Stream<T> distinct()返回由該流的不同元素(根據Object.equals(Object) )組成的流
    Stream<T> sorted()返回由此流的元素組成的流,根據自然順序排序
    Stream<T> sorted(Comparator comparator)返回由該流的元素組成的流,根據提供的Comparator進行排序
    <R> Stream<R> map(Function mapper)返回由給定函數應用于此流的元素的結果組成的流
    IntStream mapToInt(ToIntFunction mapper)返回一個IntStream其中包含將給定函數應用于此流的元素的結果
  • filter代碼演示

public class StreamDemo01 {public static void main(String[] args) {//創建一個集合,存儲多個字符串元素ArrayList<String> list = new ArrayList<String>();list.add("林青霞");list.add("張曼玉");list.add("王祖賢");list.add("柳巖");list.add("張敏");list.add("張無忌");//需求1:把list集合中以張開頭的元素在控制臺輸出list.stream().filter(s -> s.startsWith("張")).forEach(System.out::println);System.out.println("--------");//需求2:把list集合中長度為3的元素在控制臺輸出list.stream().filter(s -> s.length() == 3).forEach(System.out::println);System.out.println("--------");//需求3:把list集合中以張開頭的,長度為3的元素在控制臺輸出list.stream().filter(s -> s.startsWith("張")).filter(s -> s.length() == 3).forEach(System.out::println);} }

limit&skip代碼演示

public class StreamDemo02 {public static void main(String[] args) {//創建一個集合,存儲多個字符串元素ArrayList<String> list = new ArrayList<String>();list.add("林青霞");list.add("張曼玉");list.add("王祖賢");list.add("柳巖");list.add("張敏");list.add("張無忌");//需求1:取前3個數據在控制臺輸出list.stream().limit(3).forEach(System.out::println);System.out.println("--------");//需求2:跳過3個元素,把剩下的元素在控制臺輸出list.stream().skip(3).forEach(System.out::println);System.out.println("--------");//需求3:跳過2個元素,把剩下的元素中前2個在控制臺輸出list.stream().skip(2).limit(2).forEach(System.out::println);} }

concat&distinct代碼演示

public class StreamDemo03 {public static void main(String[] args) {//創建一個集合,存儲多個字符串元素ArrayList<String> list = new ArrayList<String>();list.add("林青霞");list.add("張曼玉");list.add("王祖賢");list.add("柳巖");list.add("張敏");list.add("張無忌");//需求1:取前4個數據組成一個流Stream<String> s1 = list.stream().limit(4);//需求2:跳過2個數據組成一個流Stream<String> s2 = list.stream().skip(2);//需求3:合并需求1和需求2得到的流,并把結果在控制臺輸出 // Stream.concat(s1,s2).forEach(System.out::println);//需求4:合并需求1和需求2得到的流,并把結果在控制臺輸出,要求字符串元素不能重復Stream.concat(s1,s2).distinct().forEach(System.out::println);} }

sorted代碼演示

public class StreamDemo04 {public static void main(String[] args) {//創建一個集合,存儲多個字符串元素ArrayList<String> list = new ArrayList<String>();list.add("linqingxia");list.add("zhangmanyu");list.add("wangzuxian");list.add("liuyan");list.add("zhangmin");list.add("zhangwuji");//需求1:按照字母順序把數據在控制臺輸出 // list.stream().sorted().forEach(System.out::println);//需求2:按照字符串長度把數據在控制臺輸出list.stream().sorted((s1,s2) -> {int num = s1.length()-s2.length();int num2 = num==0?s1.compareTo(s2):num;return num2;}).forEach(System.out::println);} }

map&mapToInt代碼演示

public class StreamDemo05 {public static void main(String[] args) {//創建一個集合,存儲多個字符串元素ArrayList<String> list = new ArrayList<String>();list.add("10");list.add("20");list.add("30");list.add("40");list.add("50");//需求:將集合中的字符串數據轉換為整數之后在控制臺輸出 // list.stream().map(s -> Integer.parseInt(s)).forEach(System.out::println); // list.stream().map(Integer::parseInt).forEach(System.out::println); // list.stream().mapToInt(Integer::parseInt).forEach(System.out::println);//int sum() 返回此流中元素的總和int result = list.stream().mapToInt(Integer::parseInt).sum();System.out.println(result);} }

?

總結

以上是生活随笔為你收集整理的Stream流中间操作方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。