1. 程式人生 > >java實用方法系列 list轉換為字串的形式

java實用方法系列 list轉換為字串的形式

前言

我們都知道

List<String> list = new ArrayList<>();
list.add("jianglei");
list.add("dengyi");

String str = list.toString();
System.out.println(str); //會輸出[jianglei, dengyi]

上述呼叫的toString()方法其實是在AbstractCollection類中封裝好的

在開發中我們也會遇到類似的問題

比如給定了一個數組{“a”, “b”, “c”}
讓我們拼接成如下的形式”(name = a AND name = b AND name = c)”
最主要的問題是當遍歷到最後一個元素時,不能新增AND了

思路

其實就是最後一個元素的判斷了,如果遍歷到最後一個元素,就不新增AND

實現

String[] params = {"a", "b", "c"};
StringBuilder sb = new StringBuilder();
sb.append('(');
for(int i = 0, len = params.length; i < len; i++){
    sb.append("name = ")
      .append(params[i]);
    if(i != (len -1)){
        sb.append(" AND ");
    }
}
sb.append
(')'); System.out.println(sb); //(name = a AND name = b AND name = c)

JDK AbstractCollection中的toString()方法

在這裡E是範型引數,我們把它當作一個物件就好。
這種程式碼的實現思路好新穎,值得學習一下

public String toString() {
        Iterator<E> it = iterator();
        if (! it.hasNext())
            return "[]";

        StringBuilder sb = new
StringBuilder(); sb.append('['); for (;;) { E e = it.next(); //這裡判斷集合中的元素是不是引用了自身,防止遞迴呼叫 sb.append(e == this ? "(this Collection)" : e); if (! it.hasNext()) return sb.append(']').toString(); sb.append(',').append(' '); } }