首页 > 解决方案 > 如何从列表中创建一个长号码?

问题描述

如何从 a 创建一个长数字List<Integer>

从:

List<Integer> ints = Arrays.asList(1,2,3,4,5,6,7,8,9)

至:

long = 1234567489

谢谢

标签: java

解决方案


tl; dr 下面的方法只有在您的值从 0 到 9 时才会对您有所帮助。对于各种值,请参阅 Arvind 的回答


使用流缩减,您可以实现与@Dmitry Bychenko 在评论中提出的相同示例

List<Integer> ints = Arrays.asList(1,2,3,4,5,6,7,8,9);

long result = ints.stream()
        .mapToLong(x -> x)
        .reduce(0, (prev, current) -> prev * 10 + current);

System.out.println("result = " + result); // reduce = 123456789

但是,如果您的列表包含太多元素,则会溢出Long.MAX_VALUE,因此我更愿意根据BigInteger

List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9);

BigInteger result = ints.stream()
        .map(BigInteger::valueOf)
        .reduce(BigInteger.ZERO, (prev, current) -> prev.multiply(BigInteger.TEN).add(current));

System.out.println("result = " + result); // reduce = 123456789123456789123456789123456789

推荐阅读