初識stream
1、對于迭代來說,包含內部迭代和外部迭代。
外部迭代
內部迭代
外部迭代:(程序邏輯自己控制迭代過程)
int count = 0;
Iterator<Artist> iterator = allArtists.iterator();
while(iterator.hasNext()) {
Artist artist = iterator.next();
if (artist.isFrom("London")) {
count++;
}
}
內部迭代:(相當于函數回調,將方法傳入給java庫類內部,由庫內部來回調你的接口函數)
package org.java8.stream;
import java.util.ArrayList;
import java.util.Collection;
public class StreamTest {
public static void main(String[] args) {
Collection<Artist> allArtists = new ArrayList<>();
Artist test = new Artist();
test.setFrom("London");
allArtists.add(test);
//遍歷放在內部,將方法傳入到內部作為函數進行調用
long count = allArtists.stream()
.filter(artist -> artist.isFrom("London"))
.count();
System.out.println(count);
allArtists.stream()
.filter(artist ->{
System.out.println("no print");//打印不出來,因為并沒有具體的進行計算,判斷計算方法是看返回的還是不是stream類型
return artist.isFrom("London");
});
}
static class Artist {
String name;
String from;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isFrom(String from) {
return this.from.equalsIgnoreCase(from);
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
}
}