簡體   English   中英

字符串的 ArrayList 到單個字符串

[英]ArrayList of Strings to one single string

我有一個字符串數組列表(數組列表中的每個單獨元素只是一個沒有空格的單詞),我想獲取每個元素並將每個下一個單詞附加到字符串的末尾。

所以說數組列表有

    element 0 = "hello"
    element 1 = "world,"
    element 2 = "how"
    element 3 = "are"
    element 4 = "you?"

我想創建一個名為句子的字符串,其中包含“hello world,你好嗎?”

從 Java 8 開始,這已添加到標准 Java API 中:

String.join()方法:

String joined = String.join("/", "2014", "10", "28" ); // "2014/10/28"

List<String> list = Arrays.asList("foo", "bar", "baz");
joined = String.join(";", list); // "foo;bar;baz"

還添加了StringJoiner

StringJoiner joiner = new StringJoiner(",");
joiner.add("foo");
joiner.add("bar");
joiner.add("baz");
String joined = joiner.toString(); // "foo,bar,baz"

另外,它是 nullsafe,我很欣賞。 我的意思是,如果StringJoinerList遇到null ,它不會拋出 NPE:

@Test
public void showNullInStringJoiner() {
    StringJoiner joinedErrors = new StringJoiner("|");
    List<String> errorList = Arrays.asList("asdf", "bdfs", null, "das");
    for (String desc : errorList) {
        joinedErrors.add(desc);
    }

    assertEquals("asdf|bdfs|null|das", joinedErrors.toString());
}

就像評論中建議的那樣,您可以使用StringBuilder來做到這一點:

StringBuilder listString = new StringBuilder();

for (String s : list)
     listString.append(s).append(" ");

或沒有顯式循環:

list.forEach(s -> listString.append(s).append(" "));

甚至更優雅的 Java 8 功能:

String listString = String.join(" ", list);

使用 StringUtils 來解決這個問題。

例如,Apache Commons Lang 提供了連接方法。

StringUtils.join(myList,","))

它將遍歷您的數組或字符串列表,並使用第二個參數作為分隔符加入它們。 請記住 - 總有一個圖書館可以讓一切變得簡單。

爪哇 8

final String concatString= List.stream()
                .collect(Collectors.joining(" "));

好吧,循環的標准應該有效:

String toPrint = "";
for(int i=0; i<list.size(); i++){
  toPrint += list.get(i)+" ";
}
System.out.println(toPrint);

希望有幫助!

最簡單的方法:

String ret = "";
for (int i = 0; i < array.size(); i++) {
    ret += array.get(i) + " ";
}

但是如果你的數組很長,字符串 concat 的性能就會很差。 您應該使用 StringBuilder 類。

這是簡單的方法

String value = TextUtils.join(" ", sample);

樣本是數組列表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM