我有一个像List<Integer>一样的{ 1, 2, 3 ,4, 5 },我想得到像12345一样的结果。
如何使用Java8流或任何智能方法来完成此操作?
List由单数非负整数组成.
我当然可以喜欢1*10000+ 2 * 1000 + 3*100 + 4*10 + 5,但这是相当乏味的。
发布于 2018-07-22 09:16:48
int n = IntStream.of(array).reduce(0, (a,b) -> 10*a + b)这实际上与以下情况相同:
int n = 0;
for (int b : array) {
n = 10 * n + b;
}就我个人而言,在没有其他约束的情况下,我会选择后者,因为它的代码要简单得多,不涉及相对重量级的流框架,更易于调试等等。
发布于 2018-07-22 09:25:44
这一种方法是不使用流,而是使用regex的可能的 way:
Integer.parseInt(Arrays.toString(nums).replaceAll("\\D+", ""));发布于 2018-07-22 09:32:57
您还可以使用以下方法获得相同的结果:
List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5);
int size = ints.size();
double res = IntStream.range(1, size + 1)
.mapToDouble(i -> ints.get(i - 1) * Math.pow(10, size - i))
.sum();这只是将每个digit*(10^digit_position_from_right)之和相加,digit_position_from_right从零开始。
https://stackoverflow.com/questions/51463599
复制相似问题