/*
forEach:該方法接收一個Consumer接口函數,將每個流元素交給該函數處理
簡單記:
forEach方法:用來遍歷流中的數據
是一個終結方法,遍歷以後就不能繼續調用Stream流中的其餘方法
*/面試
public class demo01Stream_ForEach { public static void main(String[] args) { //獲取一個Stream流 Stream<String>stream= Stream.of("張三","李四","王五","趙六"); //使用Stream流的方法forEach對stream流中的數據遍歷 stream.forEach((String name)->{ System.out.println(name); }); } }
/*
filter:用於對Stream流中的數據進行過濾
filter(Predicate<? super T>predicate)
filter方法的參數Predicate是一個函數式接口,能夠使用lambda表達式
Predicate中的抽象方法
boolean test(T t)
*/app
public class demo01Stream_filter { public static void main(String[] args) { //建立一個Stream流 Stream<String> stream = Stream.of("張三", "李四", "王五", "趙六", "馮老七"); Stream<String> stream1 = stream.filter((String name) -> { return name.startsWith("馮"); }); //遍歷stream1 stream1.forEach((name)-> System.out.println(name)); } }
*Stream流屬於管道流,只能被消費一次
第一個Stream流調用完畢方法,數據會流轉到下一個流中
第一個流會關閉,再也不被調用*函數
/*
將流中的元素映射到另外一個流中,使用map方法
該接口須要一個Function函數式接口參數,能夠將當前流中的T類型數據轉換爲另外一種R類型的流
Function中的抽象方法:
R apply(T t)
*/學習
public class demoStream_map { public static void main(String[] args) { //獲取一個String類型的stream流 Stream<String>stream = Stream.of("1","2","3","4"); //使用map方法,把字符串類型的整數,轉換(映射)爲Integer類型的整數 Stream<Integer> stream1 = stream.map((String s) -> { return Integer.parseInt(s); }); stream1.forEach((i)-> System.out.println(i)); } }
/*
count方法 用於統計Stream流中的元素個數
long count();
count方法是一個終結方法,返回值是一個long類型的整數
不能再調用Stream流其餘方法
*/code
public class demoStream_count { public static void main(String[] args) { ArrayList<Integer> list= new ArrayList<>(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); Stream<Integer> stream = list.stream(); long count = stream.count(); System.out.println(count); } }
/*
limit:用於截取流中的元素
limit能夠對流進行截取,只取用前n個
limit(long maxSize);
參數是一個long型,若是集合當前長度大於參數則進行截取,不然不進行操做
limit是一個延遲方法,能夠繼續使用Stream流方法
*/接口
public class demoStream_limit { public static void main(String[] args) { String[] arr= {"xxx","wwq","wqew","wewqewqe"}; Stream<String> stream = Stream.of(arr); Stream<String> stream1 = stream.limit(2); stream1.forEach((name)-> System.out.println(name)); } }
/*
skip方法:用於跳過元素
skip(long n)
若是流的當前長度大於n,則跳過前n個,不然將會獲得一個長度爲0的空流
*/ip
public class demoStream_skip { public static void main(String[] args) { String[] arr= {"xxx","wwq","wqew","wewqewqe"}; Stream<String> stream = Stream.of(arr); Stream<String> stream1 = stream.skip(2); stream1.forEach((name)-> System.out.println(name)); } }
/*
concat:用於把流組合到一塊兒
若是有兩個流,但願合併成爲一個流,能夠使用Stream接口的靜態方法concat文檔
*/字符串
public class demoStream_concat { public static void main(String[] args) { Stream<String> stream = Stream.of("張三", "李四", "王五", "趙六", "馮老七"); String[] arr= {"QWQ", "ERE", "TYT", "UIU", "OIO"}; Stream<String> stream1 = Stream.of(arr); //合併 Stream<String> stream2 = Stream.concat(stream, stream1); stream2.forEach((name)-> System.out.print(name+" ")); } }
歡迎關注公衆號:前程有光,領取一線大廠Java面試題總結+各知識點學習思惟導+一份300頁pdf文檔的Java核心知識點總結!it