java - 如何从列表中创建一个长号码?
问题描述
如何从 a 创建一个长数字List<Integer>
?
从:
List<Integer> ints = Arrays.asList(1,2,3,4,5,6,7,8,9)
至:
long = 1234567489
谢谢
解决方案
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
推荐阅读
- regex - 如何在花括号之间添加逗号记事本++
- format - 如何复制形状格式
- python-3.x - 当消费者在使用 asyncio.Queue() 时队列中没有任务时会发生什么
- python - 如何从 Checkbutton 获取变量?
- c# - 如何按背景颜色对行值求和
- dolphindb - 跳过 DolphinDB 数组中的所有其他元素
- php - 使用 for 循环和 if 语句创建 ascii 框时出现问题
- sql-server - 使用 WHERE 子句的 SQL 查询错过了瑞典语“Ö”符号
- google-apps-script - 类型错误:无法从 null 读取属性长度
- python - Pygame 迷宫 - 碰撞问题