【故事编程:Lambda表达式】之久久未回的消息(三)

开心一笑

【什么是代沟?
就是当你换上新衣服,在老妈面前走了一圈说:
妈,有范吗?
老妈看了你一眼说:
有,在锅里,自己盛……】

提出问题

项目常用Lambda表达式有哪些???

解决问题

【故事编程:线程锁及数据准备】之魔法杂货店(一)

【故事编程:Lambda表达式】之最甜的巧克力(二)

男孩(Boy)和女孩(Girl)虽然认识很久,但在一起的时间却很短很短,因为异地的原因。两人能够一直保持联系的就是手机(BoyMobile)了。女孩曾经说过:“手机(GirlMobile)坏了,没有手机,很没安全感”。其实男孩也一样。

手机.png

女孩很忙,从男孩认识女孩开始就这样,男孩每天都很想给女孩打电话,发短信,发微信,聊QQ,可是每次想到女孩很忙,就忧虑了。男孩害怕,害怕女孩在忙,打搅到她,更害怕女孩故意的不理睬,事实上男孩也很忙......

这天晚上,男孩下班回来,去了魔法杂货店买了通讯录(AddressBook),这里面有他认识的所有人的电话号码,包含和男孩的关系。

/**
 * 描述:通讯录
 * @author ay
 */
class AddressBook extends Object{

    AddressBook(){}

    AddressBook(String name,String relationShip,String phoneNumber){
        this.relationShip = relationShip;
        this.phoneNumber = phoneNumber;
        this.setName(name);
    }

    /** 关系 **/
    private String relationShip;

    /** 电话号码 **/
    private String phoneNumber;

    public String getRelationShip() {
        return relationShip;
    }

    public void setRelationShip(String relationShip) {
        this.relationShip = relationShip;
    }

    public String getPhoneNumber() {
        return phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }
}

public class AyTest {

    public static void main(String[] args){
        //存放所有的通讯录
        List<AddressBook> allAddressBook = new ArrayList<>();
        //从魔法杂货店购买家人通讯录  10代表10个
        List<AddressBook> familyAddressBooks =  Boy.buy(new AddressBook("通讯录","家人","77777"), 10);
        //从魔法杂货店购买朋友通讯录  200代表200个
        List<AddressBook> friendAddressBooks =  Boy.buy(new AddressBook("通讯录2","朋友","55555"), 200);
        //从魔法杂货店购买同学通讯录  200代表200个
        List<AddressBook> classmateAddressBooks =  Boy.buy(new AddressBook("通讯录3","同学","666666"), 200);
        allAddressBook.addAll(familyAddressBooks);
        allAddressBook.addAll(friendAddressBooks);
        allAddressBook.addAll(classmateAddressBooks);
        //打印出所有的通讯录
        allAddressBook = allAddressBook.stream()
                .peek(addressBook -> System.out.println(addressBook.getRelationShip()
                        + " " + addressBook.getPhoneNumber()))
                .collect(Collectors.toList());

    }

}

//结果
家人0 777770
......

家人8 777778
家人9 777779
朋友0 555550
......

朋友54 5555554
朋友55 5555555

......

朋友199 666666199

同学0 5555550

男孩把通讯录整理下:


//男孩给通讯录分组了
Map<String,List<AddressBook>> groupMap =  allAddressBook
                .parallelStream()
                .collect(Collectors.groupingBy(addressBook -> addressBook.getName()));

for(String key:groupMap.keySet()){
    System.out.println(key + groupMap.get(key));
}

//男孩按照是否为 通讯录1(既家人)给通讯录分组了
Map<Boolean,List<AddressBook>> groupMap2 =  allAddressBook
                .stream()
                .collect(Collectors.partitioningBy(addressBook -> addressBook.getName().equals("通讯录1")));

for(String key:groupMap2.keySet()){
    System.out.println(key + groupMap2.get(key));
} 


//男孩给通讯录分组,并计算每个分组的数量
Map<String,Long> groupMap3 =  allAddressBook
                .stream()
                .collect(Collectors.groupingBy(((addressBook) -> addressBook.getName()),Collectors.counting()));

//打印
for(String key:groupMap3.keySet()){
            System.out.println(key + " " + groupMap3.get(key));
}

//结果
通讯录1 10
通讯录3 200
通讯录2 200

事实上,这些无聊的行为只是男孩给女孩发消息前的一些无聊之举,男孩不知道给女孩发什么,男孩心里很紧张,写好的消息反反复复的删除,修改,删除,修改......最后男孩发了句:“在忙么”。

男孩继续整理手机里的资料,但每隔几分钟都会看对话框一眼,担心错过女孩消息,忐忑,紧张又期待......

通讯录.png
//男孩给通讯录分组,并计算每个分组的数量(支持并发操作,只需把stream改为parallelStream即可)
Map<String,Long> groupMap4 =  allAddressBook
                .parallelStream()
                .collect(Collectors.groupingBy(((addressBook) -> addressBook.getName()),Collectors.counting()));
                
//男孩循环查看每个通讯录,利用forEach可以实现对集合循环遍历
allAddressBook.parallelStream().forEach(addressBook ->{
            System.out.println(addressBook.getId() + " " + addressBook.getName());
});

男孩并无等到女孩的消息。那一晚,男孩又失眠了......

悲伤图片.png

/**
 * 描述:手机
 * @author Ay
 */
class Mobile extends Object{

}

/**
 * 描述:男孩手机
 * @author Ay
 */
class BoyMobile extends Object{

}

/**
 * 描述:女孩手机
 * @author Ay
 */
class GirlMobile extends Object{

}

故事未完,待续......

参考文章

【1】Java8初体验(二)Stream语法详解

【2】Java 8函数式编程.pdf

【3】Java8初体验(一)lambda表达式语法

【4】精通lambda表达式:Java多核编程-sy.pdf

【5】Java 8 Streams API:对Stream分组和分区

读书感悟

来自弗洛伊德《梦的解析》

  • 宁肯听任自己失望,也绝不乱存奢望。
  • 梦的内容是由于意愿的形成,其目的在于满足意愿。
  • 每一个梦都起源于第一种力量(欲望),但受到了第二种力量(意识)的防御和抵制。
  • 梦是一个(受压制或者被压制的)欲望的(伪装的)满足。
  • 实际上,梦是一种愿望的达成。
  • 梦的内容乃是欲望的满足,而梦的动机却是一种欲望。

其他

如果有带给你一丝丝小快乐,就让快乐继续传递下去,欢迎点赞、顶、欢迎留下宝贵的意见、多谢支持!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容