第10篇 java 8----用流收集数据 -----连接字符串

/**
 * 连接字符串
 */
public class Demo02 {
    public static void main(String[] args) {
        List<Dish> menues = Arrays.asList(new Dish("rice", true, 10000, Dish.Type.FISH), new Dish("meate", false, 20000, Dish.Type.FISH), new Dish("dog", true, 30000, Dish.Type.FISH));
        test01(menues);
    }

    /**
     * joining工厂方法返回的收集器会把对流中每一个对象应用toString方法得到的所有字符
     * 串连接成一个字符串。这意味着你把菜单中所有菜肴的名称连接起来,如下所示:
     * 请注意,joining在内部使用了StringBuilder来把生成的字符串逐个追加起来。此外还
     * 要注意,如果Dish类有一个toString方法来返回菜肴的名称,那你无需用提取每一道菜名称的
     * 函数来对原流做映射就能够得到相同的结果
     */
    public static void test01(List<Dish> menues) {
        String nameString = menues.stream().map(Dish::getName).collect(joining());
        System.out.println(nameString);
//        但该字符串的可读性并不好。幸好,joining工厂方法有一个重载版本可以接受元素之间的
//        分界符,这样你就可以得到一个逗号分隔的菜肴名称列表:
        String nameString2 = menues.stream().map(Dish::getName).collect(Collectors.joining(", "));
        System.out.println(nameString2);
    }
}

https://github.com/wangrui0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值