我想使用 Map 返回一个字符串,如下所示 “汽车:1 个值(value)为 10.00 美元,2 个值(value)为 20.00 雷亚尔,3 个值(value)为 5.00 美元。总计 = 25.00。”
如何组装结构如下:
如果 map 有1条记录,则显示文本如下 “汽车:1 件值(value)为 10.00 美元。总计 = 30.00。”
如果 map 有2条记录,则显示文本如下 “汽车:1 件值(value)为 10.00 美元,2 件值(value)为 20.00 美元。总计 = 30.00 美元。”
如果 map 有超过3条记录,则显示如下文本 “汽车:1 个值(value)为 10.00 美元,2 个值(value)为 20.00 美元,3 个值(value)为 40.00 美元。总计 = 60.00 美元。”
如果列表有 2 个元素,则用逗号分隔并在末尾添加句点 如果列表有一个元素,它只会在末尾添加一个句点
我按如下方式设置 map
Map<Integer, BigDecimal> code = new LinkedHashMap<Integer, BigDecimal>();
code.put(1, new BigDecimal("10.0"));
code.put(2, new BigDecimal("20.0"));
code.put(3, new BigDecimal("5.99"));
for (Map.Entry<Integer, BigDecimal> entry : codeMap.entrySet()) {
Integer key = entry.getKey();
BigDecimal value = entry.getValue();
System.out.println(String.format("key: %s | value: %s", key, value));
}
最佳答案
您可以使用StringJoiner
来简化各个结果的连接过程。请参阅下面的示例代码
StringJoiner sj = new StringJoiner( "," );
double total = 0.0;
for( Integer i : code.keySet() )
{
sj.add( i + " value is $ " + code.get( i ).floatValue() );
total += code.get( i ).doubleValue();
}
StringBuilder sb;
sb = new StringBuilder( "Cars " ).append( sj.toString() ).append( ". Total is $" ).append( total );
System.out.println( sb.toString() );
这将提供输出
Cars 1 value is $ 10.0,2 value is $ 20.0,3 value is $ 5.99. Total is $35.99
关于java - 通过查看第一个和最后一个元素来格式化 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62336966/