如何在数组列表中连接字符串值
我需要使用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+,您可以使用Stream
和Collectors.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);