forEach遍歷
/*
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過濾
/*
filter:用於對Stream流中的資料進行過濾
filter(Predicate<? super T>predicate)
filter方法的引數Predicate是一個函式式介面,可以使用lambda表示式
Predicate中的抽象方法
boolean test(T t)
*/
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方法轉換流
/*
將流中的元素對映到另一個流中,使用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方法 統計個數
/*
count方法 用於統計Stream流中的元素個數
long count();
count方法是一個終結方法,返回值是一個long型別的整數
不能再呼叫Stream流其他方法
*/
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:用於擷取流中的元素
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方法:用於跳過元素
skip(long n)
如果流的當前長度大於n,則跳過前n個,否則將會得到一個長度為0的空流
*/
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方法合併流
/*
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核心知識點總結!