1. 程式人生 > 資料庫 >redis生產環境實踐優化

redis生產環境實踐優化

StringJoiner 基本使用

字面上理解就是用來拼接字串的,一般需要分隔符進行拼接,如:

這種三段式由 "," 分隔的字串,在 Java 8 之前要使用 StringBuilder/ StringBuffer 進行拼接,如:

StringBuilder sb = new StringBuilder();
sb.append("hello");
sb.append(",");
sb.append("guys");
sb.append(",");
sb.append("歡迎關注公眾號Java技術棧");
String str = sb.toString();

都是相同的分隔符逗號,這樣拼接顯然過於傻瓜式,如果要拼接的字串非常多,程式碼會十分難看,寫完感覺要崩潰。

然而 Java 8 之後有了 StringJoiner,這件事件就變得更簡單,分隔符這種全部一次性交給 StringJoiner 即可。

StringJoiner 基本使用示例:

public static void main(String[] args) {
 StringJoiner stringJoiner = new StringJoiner(",");
 stringJoiner.add("hello");
 stringJoiner.add("guys");
 stringJoiner.add("歡迎關注公眾號Java技術棧");
 System.out.println(stringJoiner.toString());
}

StringJoiner 詳細介紹

StringJoiner 的類結構圖:

成員變數:

  • prefix:拼接後的字串字首
  • delimiter:拼接時的字串分隔符
  • suffix:拼接後的字串字尾
  • value:拼接後的值
  • emptyValue:空值的情況,value為 null 時返回

構造方法:

提供了兩個構造方法,一個必須帶分隔符,另一個必須帶分隔符、字首、字尾,可以看了emptyValue預設為字首+字尾組成。

公開方法:

  • setEmptyValue:設定空值
  • toString:轉換成 String
  • add:新增字串
  • merge:從另一個 StringJoiner 合併
  • length:長度(包括字首字尾)

流式 API

如上面的示例一行程式碼搞定:

public static void main(String[] args) {
 StringJoiner stringJoiner = new StringJoiner(",").add("hello").add("guys").add("歡迎關注公眾號Java技術棧");
 System.out.println(stringJoiner.toString());
}

前後綴拼接

public static void main(String[] args) {
 StringJoiner stringJoiner = new StringJoiner(",", "[", "]");
 stringJoiner.add("hello");
 stringJoiner.add("guys");
 stringJoiner.add("歡迎關注公眾號Java技術棧");
 System.out.println(stringJoiner.toString());
}

輸出空白字串:

public static void main(String[] args) {
 StringJoiner stringJoiner = new StringJoiner(",");
 System.out.println(stringJoiner.toString());
}

輸出前後綴:

public static void main(String[] args) {
 StringJoiner stringJoiner = new StringJoiner(",", "[", "]");
}
輸出: []

輸出指定字串:

通過setEmptyValue進行設定。

public static void main(String[] args) {
 StringJoiner stringJoiner = new StringJoiner(",", "[", "]");
 stringJoiner.setEmptyValue("void");
 System.out.println(stringJoiner.toString());
}
輸出:void

String.join()

String.join() 這是針對 StringJoiner 又封裝了一層的 API,同樣出自 Java 8,可以傳入動態引數或者迭代器。

  • java.lang.String#join(java.lang.CharSequence, java.lang.CharSequence...)
  • java.lang.String#join(java.lang.CharSequence, java.lang.Iterable<? extends java.lang.CharSequence>)