Java 是否可以在我的方法中返回多个项?

Java 是否可以在我的方法中返回多个项?,java,return,time-complexity,Java,Return,Time Complexity,我已经写了三种不同Big-O复杂性的方法。有没有一种方法可以在不影响复杂性的情况下返回多个值?提前谢谢 public static double Nsquare(double[] ar){ double max=0, difference=0; double maxelement=0, minelement=0 ; for (int i=0; i<ar.length;++i){ for (int j=0; j<ar.length;++j){

我已经写了三种不同Big-O复杂性的方法。有没有一种方法可以在不影响复杂性的情况下返回多个值?提前谢谢

public static double Nsquare(double[] ar){
    double max=0, difference=0; 
    double maxelement=0, minelement=0 ;
    for (int i=0; i<ar.length;++i){
        for (int j=0; j<ar.length;++j){
            difference=Math.abs(ar[i]-ar[j]);
            if (difference>max){
                max=difference;
                maxelement=ar[i];
                minelement=ar[j];
            }
        }
    }
    //return maxelement;
    //return minelement;
    return max;
}
// O(n*log(n))
public static double NlogN(double[] ar){
    Arrays.sort(ar);
    double max=ar[ar.length-1];
    double min=ar[0];
    double difference=max-min;
    //return max;
    //return min;
    return difference;
}
// O(n)
public static double N(double[] ar){

    double max = Double.NEGATIVE_INFINITY;
    double min = Double.POSITIVE_INFINITY;

    for(double x: ar){
        if(min > x) {min =x;}
        if(max < x) {max =x;}
    }
    //return max;
    //return min;
    return Math.abs(max-min); 
}
公共静态双N方(双[]ar){
双倍最大值=0,差值=0;
双maxelement=0,minelement=0;
对于(inti=0;ix){min=x;}
如果(max
否不可能返回多个项目。但是,您可以为这些项目创建一个对象,并且可以返回它。

在java中,您不能单独返回多个值。您可以做的是,添加所有要返回到列表的值,然后返回对列表的引用

大概是这样的:

List<Double> doubleList = new ArrayList<>();
doubleList.add(max);  // index 0
doubleList.add(maxelement); // index 1
doubleList.add(minelement);  // index 2

return doubleList;
List doubleList=new ArrayList();
双重列表。添加(最大);//索引0
doubleList.add(maxelement);//指标1
双重列表。添加(minelement);//指标2
返回双重列表;

您必须更改方法签名以及该方法的调用方式。

只需编写一个包含字段max、maxelement和minelement的新类。将此类设置为返回类型

class Answer{
    private double max;
    private double maxelement;
    private double minelement;
    public Answer(double max, double maxelement, double minelement){
         this.max = max;
         this.maxelement = maxelement;
         this.minelement = minelement;
    }

    public double getMax() {
        return max;
    }
    public double getMaxelement() {
        return maxelement;
    }
    public double getMinelement() {
        return minelement;
    }
}
然后像这样返回:

public static Answer Nsquare(double[] ar){
       --
       your code
       --
       return new Answer(max, maxelement, minelement);
}

看起来你的思路是对的,但是你需要扩展你的答案,并扩展到betterHi,这不会影响方法的复杂性吗?不会。一点也不。添加到
ArrayList
O(1)
因此,如果要添加
k
要返回的值,
k
独立于
n
。因此,您的时间复杂性不会改变:)使用Map而不是List,因为您可以通过使用Map键轻松访问值。地图