Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

Joiner Class ใน Guava Library สำหรับต่อสตริง

Joiner ของ Guava: จัดการ join string/oject ง่ายกว่า String.join()

Maven: com.google.guava:guava:32.1.3-jre (หรือเวอร์ชันใหม่กว่า)

ตัวอย่าง

import com.google.common.base.Joiner;
import java.util.*;

public class Demo {
    public static void main(String[] args) {
        String[] arr = {"hel", null, "lo", "wo", "r", null, "ld"};
        
        System.out.println("Original: " + Arrays.toString(arr));
        
        // ข้าม null, ใช้ + เป็น delimiter
        String result = Joiner.on('+').skipNulls().join(arr);
        System.out.println("Joined (skipNulls): " + result);
        
        // ใช้สำหรับ null
        String result2 = Joiner.on('+').useForNull("NULL").join(arr);
        System.out.println("Joined (useForNull): " + result2);
        
        // กับ Iterable
        List list = Arrays.asList("a", "b", "c");
        System.out.println("List joined: " + Joiner.on("-").join(list));
        
        // MapJoiner สำหรับ Map
        Map map = Map.of("a", 1, "b", 2);
        String mapStr = Joiner.on(",").withKeyValueSeparator("=").join(map);
        System.out.println("Map joined: " + mapStr); // a=1,b=2
    }
}

ผลลัพธ์

Original: [hel, null, lo, wo, r, null, ld]
Joined (skipNulls): hel+lo+wo+r+ld
Joined (useForNull): hel+NULL+lo+wo+r+NULL+ld
List joined: a-b-c
Map joined: a=1,b=2

คุณสมบัติเด่น

  • skipNulls() - ข้าม null ไม่ใส่ในผลลัพธ์
  • useForNull(String) - แทนที่ null ด้วยสตริงที่กำหนด
  • withKeyValueSeparator(String) - สำหรับ Map (key=value)
  • Thread-safe, immutable
  • ประสิทธิภาพดีกว่า String.join() สำหรับกรณีซับซ้อน

เปรียบเทียบกับ String.join() (Java 8+)

String.join("+", "a", "b", "c") ใช้ได้สำหรับกรณีง่าย แต่ไม่มี skipNulls, useForNull, MapJoiner