Java8的StringJoiner使用API解析

146 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 Java8的StringJoiner使用API解析: 闲话少许: 直接上图:

在这里插入图片描述

jdk1.8在 java.util包下新增StringJoiner 类。 所以在jdk1.8以下版本无法使用哈。

	
	/**
	 * 构造方法1
	 * delimiter 分隔符
     */
    public StringJoiner(CharSequence delimiter) {
    	// 实际调用的还是构造方法2, 前后缀默认""
        this(delimiter, "", "");
    }
    
    /**
	 * 构造方法2
	 * delimiter 分隔符
	 * prefix 拼接前缀
	 * suffix 拼接后缀
     */
    public StringJoiner(CharSequence delimiter,
                        CharSequence prefix,
                        CharSequence suffix) {
        Objects.requireNonNull(prefix, "The prefix must not be null");
        Objects.requireNonNull(delimiter, "The delimiter must not be null");
        Objects.requireNonNull(suffix, "The suffix must not be null");
        // make defensive copies of arguments
        this.prefix = prefix.toString();
        this.delimiter = delimiter.toString();
        this.suffix = suffix.toString();
        // ***从此处可以看到,如果不设置emptyValue,默认是前后缀拼接***
        this.emptyValue = this.prefix + this.suffix;
    }
    

在这里插入图片描述

如下代码在main方法中执行测试即可: 具体的方法说明也在如下代码中体现了。

        
        StringJoiner stringJoiner = new StringJoiner(",", "pre", "suf");
        // 将集合中的元素按照指定分隔符","拼接,无需判端是否是最后一个元素,比之StringBuilder好一些。
        IntStream.range(1, 10).forEach(i -> stringJoiner.add(i + ""));
        
        StringJoiner stringJoiner1 = new StringJoiner("/", "pre1", "suf1");
        IntStream.range(10, 15).forEach(i -> stringJoiner1.add(i + ""));
        
        // 前者.merge(后者):就是将后者当做一个整体元素拼接到前者的后面
        // 且二者之间的分隔符用前者的分隔符, 且忽略后者的pre和suf
        stringJoiner.merge(stringJoiner1);
        
        // 一旦设置了emptyValue,则当真的拼接内容为空时,前后缀无效,输出emptyValue;
        // 当不设置emptyValue且当真的拼接内容为空时时,输出前缀+后缀的字符串
        // stringJoiner.setEmptyValue("abc");
        stringJoiner.setEmptyValue("");
        
        // 单独add一个元素, 拼接的元素置于末尾,但在suffix之前
        stringJoiner.add("hehe");
        
        // 长度指的是toString()后的字符串长度。
        int length = stringJoiner.length();
        
        System.out.println("长度为: " + length);
        System.out.println("最后输出: " + stringJoiner.toString());
        

附:

END,别偷懒,去运行一下,浪费不了多少时间的。加油哦!!!