List转String

<dependencies>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.12.0</version>
        </dependency>

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>32.0.0-jre</version>
        </dependency>

        <!--日志-->

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>2.0.7</version>
        </dependency>

        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.18.0</version>
        </dependency>

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.4.8</version>
        </dependency>
    </dependencies>

 public static final Logger log = LoggerFactory.getLogger(ListConvertsString.class);

    public static void main(String[] args) {
        List<String> list = Arrays.asList("张三", "李四", "王五", "赵六");

        // StringUtils StringUtils.join(Iterable,"delimiter")
        String join1 = StringUtils.join(list, ",");

        // guava Joiner.on("delimiter").join(Iterable)
        String join2 = Joiner.on(",").join(list);

        // Java8 String.join(Iterable,"delimiter")
        String join3 = String.join(",", list);

        // Java8 Collectors.joining("delimiter","prefix","suffix")
        String join4 = list.stream().collect(Collectors.joining(",", "[", "]"));

        // 传统循环并且拼接
        StringBuilder builder = new StringBuilder();
        IntStream.range(0, list.size()).forEach(i -> {
            builder.append(list.get(i));
            builder.append(",");
        });
        String join5 = builder.substring(0, builder.length() - 1);

        //调用 .add() 方法时,会将新的元素追加到已有的字符串序列中,并自动添加指定的分隔符。
        StringJoiner joiner = new StringJoiner(",","[","]");
        for (String str : list) {
            joiner.add(str);
        }
        String join6 = joiner.toString();

        // deleteCharAt(int a),删除指定位置的字符
        StringBuilder builder2 = new StringBuilder();
        list.forEach(str -> builder2.append(str).append(","));
        String join7 = builder2.deleteCharAt(builder2.length() - 1).toString();

        // collectingAndThen(Collector<T,A,R> downstream,Function<R,RR> finisher)
        // 第一个参数用于 reduce 操作,而第二参数用于 map操作。
        // 也就是,先把流中的所有元素传递给第一个参数,然后把生成的集合传递给第二个参数来处理
        String join8 = list.stream()
                .collect(Collectors.collectingAndThen(Collectors.joining(","), str ->  str ));

        log.info("Join1: " + join1);
        log.info("Join2: " + join2);
        log.info("Join3: " + join3);
        log.info("Join4: " + join4);
        log.info("Join5: " + join5);
        log.info("Join6: " + join6);
        log.info("Join7: " + join7);
        log.info("Join8: " + join8);
    }
16:26:47.528 [main] INFO org.example.ListConvertsString -- Join1: 张三,李四,王五,赵六
16:26:47.529 [main] INFO org.example.ListConvertsString -- Join2: 张三,李四,王五,赵六
16:26:47.529 [main] INFO org.example.ListConvertsString -- Join3: 张三,李四,王五,赵六
16:26:47.529 [main] INFO org.example.ListConvertsString -- Join4: [张三,李四,王五,赵六]
16:26:47.529 [main] INFO org.example.ListConvertsString -- Join5: 张三,李四,王五,赵六
16:26:47.529 [main] INFO org.example.ListConvertsString -- Join6: [张三,李四,王五,赵六]
16:26:47.529 [main] INFO org.example.ListConvertsString -- Join7: 张三,李四,王五,赵六
16:26:47.529 [main] INFO org.example.ListConvertsString -- Join8: 张三,李四,王五,赵六

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值