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

使用Java在原语数组中查找最大/分钟值

使用Java在原语数组中查找最大/分钟值

MMMHUHU 2019-06-26 16:49:53
使用Java在原语数组中查找最大/分钟值编写函数以确定数组中的min/max值非常简单,例如:/**  *   * @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贡献1811条经验 获得超4个赞

使用Commonslang(以转换)+集合(到min/max)

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-06-26
?
当年话下

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

您可以简单地使用新的Java 8Streams但你得和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-06-26
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

是的,这是在收藏班级,等级。注意,您需要手动将原始char数组转换为字符[]。

一个简短的演示:

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-06-26
  • 3 回答
  • 0 关注
  • 455 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号