我想从包含整数的列表的值创建一个带有 String.format 的字符串,如下所示 String.format("Q1={}, Q2={}, Q3={}, Q4={}" list) 。private String createString(Player player){List<Integer> answers= new ArrayList<>(); answers.add(player.getQuestion1()); answers.add(player.getQuestion2()); answers.add(player.getQuestion3()); answers.add(player.getQuestion4()); answers.add(player.getQuestion5()); answers.add(player.getQuestion6()); answers.add(player.getQuestion7()); answers.add(player.getQuestion8()); answers.add(player.getQuestion9()); answers.add(player.getQuestion10()); return String.format("Q1={}, Q2={}, Q3={}, Q4={}, Q5={}, Q6={}, Q7={}, Q8={}, Q9={}, Q10={}", answers.stream().map(a -> a.toString());}
3 回答
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
类似于以下内容,Collectors.joining
根据需要使用索引和答案进行映射:
return IntStream.range(0, answers.size()) .mapToObj(idx -> String.format("Q%s = %s", idx + 1, answers.get(idx))) .collect(Collectors.joining(", "))
婷婷同学_
TA贡献1844条经验 获得超8个赞
String.format不适合格式化列表。通常,String.join更合适。
首先,创建一个用逗号连接的字符串列表:
List<String> strings = IntStream.rangeClosed(1, answers.size())
.mapToObj(x -> "Q" + x + "=" + answers.get(x - 1))
.collect(Collectors.toList());
然后,致电String.join:
String result = String.join(", ", strings);
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
String.format
对于此示例效果不佳,因为您需要的格式中的占位符数量与列表大小完全相同。你最好构建自己的字符串。但如果你想坚持String.format
:
由于String.format
使用 varargs (这是一个数组),因此您可以简单地使用toArray()
. 请注意,格式中的占位符只能{}
是%d
,%s
等
return String.format("Q1=%s, Q2=%s, Q3=%s, Q4=%s, Q5=%s, ...", answers.toArray());
添加回答
举报
0/150
提交
取消