我想從包含整數的列表的值創建一個帶有 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
提交
取消