【发布时间】:2019-08-31 18:37:37
【问题描述】:
如何找到ArrayList 的BigIntegers 的最小和最大元素。
我试过的是:
import java.math.BigInteger;
import java.io.*;
import java.util.*;
public class HelloWorld{
public static void main(String []args){
BigInteger i1 = new BigInteger("4343345345345");
BigInteger i2 = new BigInteger("4343453345345345");
BigInteger i3 = new BigInteger("4343453345");
List<BigInteger> list = new ArrayList<>();
list.add(i1);
list.add(i2);
list.add(i3);
BigInteger max = list.stream().max(Comparator.comparing(BigInteger::intValue())).orElseThrow(NoSuchElementExcep::new);
BigInteger min = list.stream().min(Comparator.comparing(BigInteger::intValue())).orElseThrow(NoSuchElementExcep::new);
System.out.println(max.intValue());
System.out.println(min.intValue());
}
}
但这给了我以下错误:
HelloWorld.java:20: error: ')' expected
BigInteger min = list.stream().min(Comparator.comparing(BigInteger::intValue())).orElseThrow(NoSuchElementExcep::new);
^
HelloWorld.java:20: error: ';' expected
BigInteger min = list.stream().min(Comparator.comparing(BigInteger::intValue())).orElseThrow(NoSuchElementExcep::new);
^
HelloWorld.java:20: error: illegal start of expression
BigInteger min = list.stream().min(Comparator.comparing(BigInteger::intValue())).orElseThrow(NoSuchElementExcep::new);
^
HelloWorld.java:20: error: ';' expected
BigInteger min = list.stream().min(Comparator.comparing(BigInteger::intValue())).orElseThrow(NoSuchElementExcep::new);
^
HelloWorld.java:20: error: illegal start of expression
BigInteger min = list.stream().min(Comparator.comparing(BigInteger::intValue())).orElseThrow(NoSuchElementExcep::new);
^
HelloWorld.java:20: error: ';' expected
BigInteger min = list.stream().min(Comparator.comparing(BigInteger::intValue())).orElseThrow(NoSuchElementExcep::new);
^
HelloWorld.java:20: error: not a statement
BigInteger min = list.stream().min(Comparator.comparing(BigInteger::intValue())).orElseThrow(NoSuchElementExcep::new);
^
HelloWorld.java:20: error: ';' expected
BigInteger min = list.stream().min(Comparator.comparing(BigInteger::intValue())).orElseThrow(NoSuchElementExcep::new);
还有其他想法吗?
【问题讨论】:
-
BigInteger自然具有可比性。您应该使用natural order 进行比较。如果您的值对于整数来说太大了,那么尝试与intValue()进行比较是没有意义的。
标签: java arraylist collections java-8 java-stream