天天看點

JDK源碼之lang.String(九)String類中的常用方法

1.String類中的join(CharSequence delimiter, CharSequence... elements)方法:

public static String join(CharSequence delimiter, CharSequence... elements) {
        Objects.requireNonNull(delimiter);
        Objects.requireNonNull(elements);
        // Number of elements not likely worth Arrays.stream overhead.
        StringJoiner joiner = new StringJoiner(delimiter);
        for (CharSequence cs: elements) {
            joiner.add(cs);
        }
        return joiner.toString();
    }           

 傳回一個新的字元串,由

CharSequence elements

的副本組成,并附有指定的delimiter的

delimiter

順便說一下requireNonNull(T obj)方法:

public static <T> T requireNonNull(T obj) {
        if (obj == null)
            throw new NullPointerException();
        return obj;
    }           

 就是一個判斷傳入的對象是否為null的方法

示例:

package com.ftl821;

public class Test {
	public static void main(String[] args) {
		String str="ff";
		String str1="dfhsssssssssssssssshd";
		System.out.println(str.join("**", "看","一","下","結果"));
		System.out.println(str1.join("**", "看","一","下","結果"));
		System.out.println(String.join("**", "看","一","下","結果"));
		
	}

}
           

輸出:

JDK源碼之lang.String(九)String類中的常用方法

其輸出結果和調用該方法的對象沒有任何關系,最終得到的對象隻與方法裡面的格式和内容有關。

2.String類中的 join(CharSequence delimiter, Iterable<? extends CharSequence> elements)方法:

public static String join(CharSequence delimiter,
            Iterable<? extends CharSequence> elements) {
        Objects.requireNonNull(delimiter);
        Objects.requireNonNull(elements);
        StringJoiner joiner = new StringJoiner(delimiter);
        for (CharSequence cs: elements) {
            joiner.add(cs);
        }
        return joiner.toString();
    }           

傳回一個新

String

的副本組成

CharSequence elements

與指定的副本一起加入

delimiter

示例:

package com.ftl821;

import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;

public class Test {
	public static void main(String[] args) {
		
	     List<String> strings = new LinkedList<>();
	     strings.add("Java");
	     strings.add("is");
	     strings.add("cool");
	    System.out.println(String.join("**", strings));

	     Set<String> strings1 = new LinkedHashSet<>();
	     strings1.add("Java"); 
	     strings1.add("is");
	     strings1.add("very");
	     strings1.add("cool");
	     System.out.println(String.join("##", strings1));

	}

}
           

輸出:

JDK源碼之lang.String(九)String類中的常用方法

分析:其實這個方法和上一個方法是一樣的,隻不過上個方法的字元串元素是一個一個寫上去的,而這個方法則是将字元串元素放到list或set集合中,然後再在字元串元素中間添加指定的字元串進行拼接後輸出。