美文网首页
maxBy minBy

maxBy minBy

作者: phoebe_gyq | 来源:发表于2018-05-16 20:39 被阅读0次
    
    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)));
        }
    
    }
    

    相关文章

      网友评论

          本文标题:maxBy minBy

          本文链接:https://www.haomeiwen.com/subject/mzdzfftx.html