maxBy minBy


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)));
    }

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 乳白色的月光下十点钟上床睡觉,伴着鸡鸣狗吠声早晨六点半醒来,毫无意识中沉睡了整整八个半小时,温暖的被窝的确让人舒服...
    梦想2050阅读 3,514评论 7 23
  • 避免【隧道视野】 想象自己在隧道里开车,在进入和离开隧道的那个时刻,你才会有强烈的对比感受,自己的视野开阔-变窄-...
    王子Echo阅读 1,826评论 1 4
  • 张羽和女朋友孙晨认识五年了,在他的印象当中,一次都没有带女朋友出去玩过。 这两天刚好是清明节,公司竟然大发慈悲放了...
    木头windy阅读 3,184评论 0 12
  • 比大海广阔的是天空,比天空更广阔的是人的胸怀。 而我们想要有广阔的胸怀,首先要提升的是我们的人生格局。今天我们分享...
    摆渡精灵阅读 3,064评论 0 2
  • 早晨驱车去单位,看着路两边往后退去的景色,想起了我的老校长。 他是我参加工作后的第一位校长,对我的人生影响很大的人...
    石川河女神阅读 936评论 0 0