我需要使用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
(最后还有空白)。
答案 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.joining
和Arrays.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)
按要求。