如何找到大整数数组列表的最小和最大元素?

如何找到 的 最小和最大元素。ArrayListBigIntegers


我尝试过的是:


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);

                                                                                       ^


还有其他想法吗?


慕斯王
浏览 109回答 3
3回答

温温酱

获取最小值和最大值确实可以在不比较 s 的情况下工作。您应该使用自然排序:intValueBigInteger&nbsp;max&nbsp;=&nbsp;list.stream().max(BigInteger::compareTo).orElseThrow(NoSuchElementExcep::new);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BigInteger&nbsp;min&nbsp;=&nbsp;list.stream().min(BigInteger::compareTo).orElseThrow(NoSuchElementExcep::new);同样没有的是,您正在打印值:System.out.println(max.intValue()); System.out.println(min.intValue());您正在调用方法,但该号码超出了 (32b) 的容量。您应该使用:intValueintSystem.out.println(max); System.out.println(min);

侃侃无极

只需做BigInteger max = list.stream().max(BigInteger::compareTo).get();BigInteger min = list.stream().min(BigInteger::compareTo).get();

森林海

答案是:import java.io.*;import java.util.*;public class HelloWorld{&nbsp; &nbsp; &nbsp;public static void main(String []args){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BigInteger i1 = new BigInteger("4343345345345");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BigInteger i2 = new BigInteger("4343453345345345");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BigInteger i3 = new BigInteger("22");&nbsp; &nbsp; &nbsp; &nbsp; List<BigInteger> list = new ArrayList<>();&nbsp; &nbsp; &nbsp; &nbsp; list.add(i1);&nbsp; &nbsp; &nbsp; &nbsp; list.add(i2);&nbsp; &nbsp; &nbsp; &nbsp; list.add(i3);&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(Collections.min(list, Comparator.naturalOrder()));&nbsp; &nbsp; &nbsp;}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java