将多个BigInteger值添加到ArrayList

aaa*_*aaa -5 java arrays arraylist

我想为一个添加多个BigIntegerArrayList.我所发现的只是重复添加单个值的示例,每个值都在自己的代码行中表示.我正在寻找类似的东西

ArrayList<BigInteger> array = {bigInt1, bigInt2, bigInt3};
Run Code Online (Sandbox Code Playgroud)

而是它的:

ArrayList<BigInteger> array = new ArrayList<BigInteger>();
array.add(bigInt1);
array.add(bigInt2);
array.add(bigInt3);
Run Code Online (Sandbox Code Playgroud)

可以在不添加一个元素/行或使用for循环的情况下完成吗?

cle*_*tus 27

我不太确定你在追求什么.你有四种选择:

1.单独添加项目

实例化具体List类型,然后调用add()每个项目:

List<BigInteger> list = new ArrayList<BigInteger>();
list.add(new BigInteger("12345"));
list.add(new BigInteger("23456"));
Run Code Online (Sandbox Code Playgroud)

2.子类化具体List类型(双支撑初始化)

有些人可能建议像这样的双括号初始化:

List<BigInteger> list = new ArrayList<BigInteger>() {{
  add(new BigInteger("12345"));
  add(new BigInteger("23456"));
}};
Run Code Online (Sandbox Code Playgroud)

我建议不要这样做.你在这里做的实际上是子类化ArrayList,(imho)不是一个好主意.这种事情可以破坏Comparators,equals()方法等等.

3.使用 Arrays.asList()

另一种方法:

List<BigInteger> list = new ArrayList<BigInteger>(Arrays.asList(
  new BigInteger("12345"),
  new BigInteger("23456")
));
Run Code Online (Sandbox Code Playgroud)

或者,如果您不需要ArrayList,只需:

List<BigInteger> list = Arrays.asList(
  new BigInteger("12345"),
  new BigInteger("23456")
);
Run Code Online (Sandbox Code Playgroud)

我更喜欢上述两种方法之一.

4. Collection文字(Java的7+)

假设在Java 7中继续使用Collection文字,您将能够这样做:

List<BigInteger> list = [new BigInteger("12345"), new BigInteger("23456")];
Run Code Online (Sandbox Code Playgroud)

目前看来,我认为此功能尚未确认.

而已.这些是你的选择.选一个.


小智 6

BigIntegerArrays.asList(1, 2, 3, 4);
Run Code Online (Sandbox Code Playgroud)

BigIntegerArrays是一个自定义类,可以满足您的需要.如果您经常这样做,这会有所帮助.这里没有火箭科学 - ArrayList BigIntegerArrays.asList(Integer ... args)将使用FOR循环.