为了账号安全,请及时绑定邮箱和手机立即绑定

使用Java查找基元数组中的最大/最小值

使用Java查找基元数组中的最大/最小值

慕后森 2019-07-23 10:51:51
使用Java查找基元数组中的最大/最小值编写一个函数来确定数组中的最小/最大值是很简单的,例如:/**  *   * @param chars  * @return the max value in the array of chars  */private static int maxValue(char[] chars) {     int max = chars[0];     for (int ktr = 0; ktr < chars.length; ktr++) {         if (chars[ktr] > max) {             max = chars[ktr];         }     }     return max;}但这不是已经在某处做过的吗?
查看完整描述

3 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

使用Commons Lang(转换)+集合(最小/最大)

import java.util.Arrays;import java.util.Collections;import org.apache.commons.lang.ArrayUtils;public class MinMaxValue {

    public static void main(String[] args) {
        char[] a = {'3', '5', '1', '4', '2'};

        List b = Arrays.asList(ArrayUtils.toObject(a));

        System.out.println(Collections.min(b));
        System.out.println(Collections.max(b));
   }}

请注意,Arrays.asList()包装底层数组,因此它不应该太占用内存,也不应该对数组元素执行复制。


查看完整回答
反对 回复 2019-07-23
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

你可以简单地使用新的Java 8 Stream小号,但你必须一起工作int

stream实用程序类的方法Arrays为您提供了IntStream可以使用该min方法的方法。你也可以做maxsumaverage,...

getAsInt方法用于从中获取值OptionalInt

import java.util.Arrays;public class Test {
    public static void main(String[] args){
        int[] tab = {12, 1, 21, 8};
        int min = Arrays.stream(tab).min().getAsInt();
        int max = Arrays.stream(tab).max().getAsInt();
        System.out.println("Min = " + min);
        System.out.println("Max = " + max)
    }}

== ==更新

如果执行时间很重要,并且只想一次使用这样的summaryStatistics()方法就可以浏览数据

import java.util.Arrays;import java.util.IntSummaryStatistics;public class SOTest {
    public static void main(String[] args){
        int[] tab = {12, 1, 21, 8};
        IntSummaryStatistics stat = Arrays.stream(tab).summaryStatistics();
        int min = stat.getMin();
        int max = stat.getMax();
        System.out.println("Min = " + min);
        System.out.println("Max = " + max);
    }}

这种方法可以提供比经典循环更好的性能,因为该summaryStatistics方法是简化操作并且允许并行化。


查看完整回答
反对 回复 2019-07-23
?
千巷猫影

TA贡献1829条经验 获得超7个赞

是的,它是在Collections类中完成的。请注意,您需要手动将原始char数组转换为Character []。

一个简短的演示:

import java.util.*;public class Main {

    public static Character[] convert(char[] chars) {
        Character[] copy = new Character[chars.length];
        for(int i = 0; i < copy.length; i++) {
            copy[i] = Character.valueOf(chars[i]);
        }
        return copy;
    }

    public static void main(String[] args) {
        char[] a = {'3', '5', '1', '4', '2'};
        Character[] b = convert(a);
        System.out.println(Collections.max(Arrays.asList(b)));
    }}


查看完整回答
反对 回复 2019-07-23
  • 3 回答
  • 0 关注
  • 824 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信