Adding multiple BigInteger values to an ArrayList
本问题已经有最佳答案,请猛点这里访问。
我想将多个
1 | ArrayList<BigInteger> array = {bigInt1, bigInt2, bigInt3}; |
相反,它是:
1 2 3 4 | ArrayList<BigInteger> array = new ArrayList<BigInteger>(); array.add(bigInt1); array.add(bigInt2); array.add(bigInt3); |
是否可以在不添加一个元素/行或使用for循环的情况下完成?
我不太确定你在找什么。您有四种选择:
1。单独添加项目实例化一个具体的
1 2 3 | List<BigInteger> list = new ArrayList<BigInteger>(); list.add(new BigInteger("12345")); list.add(new BigInteger("23456")); |
2。子类具体的
有些人可能会建议这样的双括号初始化:
1 2 3 4 | List<BigInteger> list = new ArrayList<BigInteger>() {{ add(new BigInteger("12345")); add(new BigInteger("23456")); }}; |
我建议不要这样做。实际上,您在这里所做的是将
另一种方法:
1 2 3 4 | List<BigInteger> list = new ArrayList<BigInteger>(Arrays.asList( new BigInteger("12345"), new BigInteger("23456") )); |
或者,如果您不需要
1 2 3 4 |
我喜欢以上两种方法中的一种。
4。EDOCX1·8个字形(Java 7 +)假设在Java 7中进行集合文字操作,您将能够做到这一点:
1 |
正如目前的情况,我不相信这个功能已经得到确认。
就是这样。这些是你的选择。挑一个。
1 | BigIntegerArrays.asList(1, 2, 3, 4); |
其中biginterrays是一个定制类,它可以完成您需要它做的事情。如果你经常这样做,这会有所帮助。这里没有火箭科学-arraylist biginterarrays.aslist(integer…args)将使用for循环。
1 |
您可能会生成一个方法,该方法在给定一个字符串的情况下返回一个新的BigInteger,该字符串称为bi(..)以减小此行的大小。
如果使用第三方库是一种选择,那么我建议使用谷歌的guava中的
1 | List<BigInteger> of = Lists.newArrayList(bigInt1, bigInt2, bigInt3); |
如果不需要易变性,则使用
1 | final List<BigInteger> of = ImmutableList.of(bigInt1, bigInt2, bigInt3); |
这是一个非常优雅的解决方案。
这很容易通过一个或两个助手函数完成:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | import java.util.*; import java.math.BigInteger; class Example { public static void main(String[] args) { ArrayList<BigInteger> array = newBigIntList( 1, 2, 3, 4, 5, 0xF, "1039842034890394", 6L, new BigInteger("ffff", 16) ); // [1, 2, 3, 4, 5, 15, 1039842034890394, 6, 65535] System.out.println(array); } public static void fillBigIntList(List<BigInteger> list, Object... numbers) { for (Object n : numbers) { if (n instanceof BigInteger) list.add((BigInteger)n); else if (n instanceof String) list.add(new BigInteger((String)n)); else if (n instanceof Long || n instanceof Integer) list.add(BigInteger.valueOf(((Number)n).longValue())); else throw new IllegalArgumentException(); } } public static ArrayList<BigInteger> newBigIntList(Object... numbers) { ArrayList<BigInteger> list = new ArrayList<>(numbers.length); fillBigIntList(list, numbers); return list; } } |