maxBy minBy

2018-05-16  本文已影响0人  phoebe_gyq

import java.util.stream.Stream;

public class Artist {

    private final String name;
    private final String origin;
    private Stream<Artist> members;

    public Artist(String name, String origin) {
        this.name = name;
        this.origin = origin;
        this.members = null;
    }

    public Artist(String name, String origin,Stream<Artist> members) {
        this.name = name;
        this.origin = origin;
        this.members = members;
    }

    public String getName() {
        return name;
    }

    public String getOrigin() {
        return origin;
    }

    public Stream<Artist> getMembers() {
        return members;
    }

    @Override
    public String toString() {
        return name;
    }
}

import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Stream;

import static java.util.Comparator.comparing;
import static java.util.stream.Collectors.maxBy;

public class MaxByDemo {
    public static void main(String[] args) {
        List<Artist> artists = Arrays.asList(
                new Artist("Fossils", "Kolkata", Stream.of(new Artist("Rupam Islam", "Kolkata"), new Artist("Deep", "Kolkata"), new Artist("Allan", "Kolkata"), new Artist("Chandramouli", "Kolkata"), new Artist("Tanmoy", "Kolkata"))),
                new Artist("Linkin Park", "California", Stream.of(new Artist("Chester Bennington", "California"), new Artist("Dave Farrell", "California"), new Artist("Mike Shinoda", "California"), new Artist("Rob Bourdon", "California"), new Artist("Brad Delson", "California"))),
                new Artist("Cactus", "Kolkata", Stream.of(new Artist("Sidhartha Sankar", "Kolkata"), new Artist("Dibyendu Mukherjee", "Kolkata"), new Artist("Ritaprabha", "Kolkata"), new Artist("Sudipto", "Kolkata"), new Artist("Mainak", "Kolkata"))),
                new Artist("Backstreet Boys", "Florida", Stream.of(new Artist("A. J. McLean", "Florida"), new Artist("Howie D.", "Florida"), new Artist("Nick Carter", "Florida"), new Artist("Kevin Richardson", "Florida"), new Artist("Brian Littrell", "Florida"))),
                new Artist("Prohori", "Kolkata", Stream.of(new Artist("Pritam", "Kolkata"))));
//        int totalMember = 0;
//        for (Artist artist : artists) {
//            Stream<Artist> members = artist.getMembers();
//            totalMember += members.count();
//        }
//        System.out.println("totalMember: " + totalMember);

        int totalMember2 = artists.stream()
                .filter(d -> d.getOrigin().equals("Kolkata"))
                .flatMap(e -> e.getMembers())
                .map(f->1).reduce(0, (a, b) -> a + b);
        System.out.println("totalMember2: " + totalMember2);

//        Long totalMember3 = artists.stream()
//                .filter(d -> d.getOrigin().equals("Kolkata"))
//                .flatMap(e -> e.getMembers()).count();
//        System.out.println("totalMember3: " + totalMember3);
    }

    public Optional<Artist> biggestGroup(Stream<Artist> artists) {
        Function<Artist,Long> getCount=artist -> artist.getMembers().count();
        return artists.collect(maxBy(comparing(getCount)));
    }

}
上一篇下一篇

猜你喜欢

热点阅读