如何在数组列表

时间:2017-08-06 03:42:58

标签: java arraylist collections iterator

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

这是我的代码:

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(最后还有空白)。

2 个答案:

答案 0 :(得分:1)

代码中的错误非常小。在每次迭代中,您都为result = element + " "变量赋值。但是,您只需将其删除并输入新值,而不是更新现有内容。

你做result = result + element + " "。但它应该像result += element + " "; 或简称:

hi

这样,第一次迭代会在其中保存hello,之后hi hello获得追加,从而产生result = result.substring(0, result.length() - 1)(而不是覆盖第一次内容)迭代)。

请注意,它现在也有最后的空格。您可以使用StringJoiner sj = new StringJoiner(" "); while(itr.hasNext()) { Object element = itr.next(); sj.add(element); } String result = sj.toString(); 删除它。或者不在最后一次迭代中添加它,但是你需要计算迭代次数。

请注意,Java有一个类StringJoiner,可以完全按照您的需要进行操作,将一些元素连接在一起,并使用 whitespace 等分隔符。你这样使用它:

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

另请注意,由于 Java 8 ,它的版本更短:

List

答案 1 :(得分:1)

请更喜欢ArrayList具体类型的Stream界面。假设您使用的是Java 8+,您可以使用Collectors.joiningArrays.asList(以及List<String> lst = Arrays.asList("hi", "hello"); String r = lst.stream().collect(Collectors.joining(" ")); System.out.println(r);

hi hello

哪个输出

list_of_dfs = {}
for name,val in details.items():
       df = pd.DataFrame.from_dict(details[name])
       df.index = [name]*len(df)
       list_of_dfs['name'] = df

df_out = pd.concat(list_of_dfs)
df_out.to_csv(f)

按要求。