package com.insightfullogic.java8.examples.chapter3;
import com.insightfullogic.java8.examples.chapter1.Artist;
import java.util.Iterator;
import java.util.List;
public class Iteration {
public int externalCountArtistsFromLondon(List<Artist> allArtists) {
// BEGIN external_count_londoners
int count = 0;
for (Artist artist : allArtists) {
if (artist.isFrom("London")) {
count++;
}
}
// END external_count_londoners
return count;
}
public int externalCountArtistsFromLondonExpanded(List<Artist> allArtists) {
// BEGIN external_count_londoners_expanded
int count = 0;
Iterator<Artist> iterator = allArtists.iterator();
while(iterator.hasNext()) {
Artist artist = iterator.next();
if (artist.isFrom("London")) {
count++;
}
}
// END external_count_londoners_expanded
return count;
}
public long internalCountArtistsFromLondon(List<Artist> allArtists) {
// BEGIN internal_count_londoners
long count = allArtists.stream()
.filter(artist -> artist.isFrom("London"))
.count();
// END internal_count_londoners
return count;
}
public void filterArtistsFromLondon(List<Artist> allArtists) {
// BEGIN filter_londoners
allArtists.stream()
.filter(artist -> artist.isFrom("London"));
// END filter_londoners
}
public void filterArtistsFromLondonPrinted(List<Artist> allArtists) {
// BEGIN filter_londoners_printed
allArtists.stream()
.filter(artist -> {
System.out.println(artist.getName());
return artist.isFrom("London");
});
// END filter_londoners_printed
}
public long internalCountArtistsFromLondonPrinted(List<Artist> allArtists) {
// BEGIN internal_count_londoners_printed
long count = allArtists.stream()
.filter(artist -> {
System.out.println(artist.getName());
return artist.isFrom("London");
})
.count();
// END internal_count_londoners_printed
return count;
}
}