我是Java 8 的新手,希望仅在 Java 8 中实现以下功能。我有以下号码1111222233334444我想转换所有这些数字,如 '1111','2222','3333','4444' 数字列表可以是任何东西,它应该是动态的我开发了如下代码,但只有一半目的List<String> numbers = Arrays.asList("111", "2222", "3333", "4444"); String collect = numbers.stream().map(n -> n).collect(Collectors.joining(",'")); System.out.println(collect);输出:111,'2222,'3333,'4444
3 回答
互换的青春
TA贡献1797条经验 获得超6个赞
就像这样:
List<String> numbers = Arrays.asList("111", "2222", "3333", "4444");
String collect = numbers.stream().map(n -> "'" + n + "'").collect(Collectors.joining(","));
System.out.println(collect);
慕神8447489
TA贡献1780条经验 获得超1个赞
为了好玩,使用 aStringBuilder
和自定义收集器:
String result = Arrays.asList("111", "2222", "3333", "4444") .stream() .collect(Collector.of( StringBuilder::new, (sb, s) -> sb.append('\'').append(s).append('\'').append(","), StringBuilder::append, sb -> { sb.setLength(Math.max(0, sb.length() - 1)); return sb.toString(); }));
慕妹3242003
TA贡献1824条经验 获得超6个赞
String numbers = Arrays.asList("111", "2222", "3333", "4444").stream()
.map(number -> "'" + number + "'")
.collect(Collectors.joining(",")));
这会给你
"111,'2222,'3333,'4444"
正如评论中所建议的那样,您也可以通过直接创建带有数字的流而不是先创建列表然后再创建流来实现。
Stream.of("111", "2222", "3333", "4444")
.map(number -> "'" + number + "'")
.collect(Collectors.joining(",")));
添加回答
举报
0/150
提交
取消