2017-08-06 75 views
-2

我需要使用concat一次打印所有數組列表值。如何連接數組列表中的字符串值

這裏是我的代碼:

ArrayList<String> lst = new ArrayList<String>(); 
lst.add("hi"); 
lst.add("hello"); 
Iterator<String> itr = lst.iterator(); 
String result = null; 

while(itr.hasNext()) { 
    Object element = itr.next(); 
    result = element + " "; 
} 

System.out.println(result); 

預期的結果應該是hi hello

但是,當前輸出是hello(最後還有一個空白)。

+1

請發佈您收到的錯誤消息。同時發佈正在輸入的內容以及輸出需要的外觀版本。在這種狀態下,問題有點不清楚。 – RHP

+0

查看'String'的javadoc,看看是否有任何方法可以讓你更容易。 – ajb

+0

它目前只輸出'hello [whitespace]',用於記錄。 – Zabuza

回答

1

請喜歡List接口到ArrayList具體類型。假設你使用的是Java 8+,你可能在StreamCollectors.joining(和Arrays.asList)像

List<String> lst = Arrays.asList("hi", "hello"); 
String r = lst.stream().collect(Collectors.joining(" ")); 
System.out.println(r); 

,輸出

hi hello 

按要求使用。

1

代碼中的錯誤非常小。在每次迭代中,您都要爲result變量賦值。但是,您不必更新您現有的內容,只需將其刪除並輸入一個新值即可。

你這樣做result = element + " "。但它應該像result = result + element + " "或簡稱相同:

result += element + " "; 

這樣第一次迭代將保存在它hi,之後hello得到附加導致hi hello(而不是覆蓋第一的內容迭代)。

請注意,它現在最後還有空格。您可以用result = result.substring(0, result.length() - 1)將其刪除。或者不要在最後一次迭代中添加它,但是您需要對迭代進行計數。


請注意,Java有一個類StringJoiner,你想要做什麼,加入一些元素結合在一起,並用分隔符像空白。您可以使用這樣的:

StringJoiner sj = new StringJoiner(" "); 
while(itr.hasNext()) { 
    Object element = itr.next(); 
    sj.add(element); 
} 
String result = sj.toString(); 

還要注意,由於的Java 8有它的一個更短的版本:

String result = String.join(" ", list); 
相關問題