Stream流中间操作方法
生活随笔
收集整理的這篇文章主要介紹了
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代碼演示
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流中间操作方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Stream流的常见生成方式
- 下一篇: Stream流终结操作方法