我需要将 Java 整数从 1-max 范围映射到 1-1,000,000 范围,但只使用目标范围中的 100 个特定(非线性)值。100 个值是:
1-10(所以前 10 个值映射到它们自己)
然后按 5 的:15、20、25 ...到 100
然后按 50 的:150、200、250 ...到 1,000
等等,最终值是 900,000、950,000 和 1,000,000
我无法理解任何比一袋嵌套的 if/else-if 更优雅的东西。
该解决方案对时间/周期不敏感。
我认为这将通过两个循环来完成。
List<Integer> values =
new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
int x = 1;
while (x < 100_000) {
for (int k = 15 * x; k <= 100 * x; k += 5 * x) {
values.add(k);
}
x *= 10;
}
values.forEach(System.out::println);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句