如何在数组列表中连接字符串值

我需要使用concat一次打印所有的arraylist值。

这是我的代码:

ArrayList lst = new ArrayList(); lst.add("hi"); lst.add("hello"); Iterator itr = lst.iterator(); String result = null; while(itr.hasNext()) { Object element = itr.next(); result = element + " "; } System.out.println(result); 

预期的结果应该是hi hello

然而,当前输出是hello (最后还有一个空格 )。

请更喜欢List接口与ArrayList具体类型。 假设您使用的是Java 8+,您可以使用StreamCollectors.joining (和Arrays.asList )之类的

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

哪个输出

 hi hello 

按照要求。

代码中的错误非常小。 在每次迭代中,您都为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);