如何在不再次调用函数的情况下获得数组大小?

问题描述 投票:0回答:2

我有下面的代码,两类,一类是main class,另一类是class1,它具有函数foo1(),该函数在ArrayList<>上进行了太多的迭代。在主类中,一次调用了foo1()函数,然后调用了size函数。

我的代码的问题在于,函数getSize()再次进行迭代以获取函数的大小。

我需要的是获得已经调用的函数的大小,而又不会丢失有关它的信息。而不是再次调用该函数并获取其大小,因为它很耗时。我考虑过在class1中创建一个属性,然后将数组的大小分配给该属性,如下所示:但是我认为这不是一个好选择,因此我正在寻找一种专业的方法。

import java.util.*;

public class HelloWorld {
  public static void main(String []args){
    class1 c = new class1();
    // foo1 function is called
    System.out.println(c.foo1());
    // get size is called, this should be in another form
    System.out.println(c.getSize());
  }     
}

public class class1{
  int size = 0;

  public ArrayList<Integer> foo1() {
    ArrayList<Integer> result = new ArrayList<>();
    for(int i = 0;i<1000;i++){
      result.add(i);
    }

    return result;
  }    

  public int getSize(){
    return foo1().size();
  }
}  

我的解决方案不受欢迎。

public class class1 {
  int size = 0;

  public ArrayList<Integer> foo1(){
    ArrayList<Integer> result = new ArrayList<>();
    for(int i = 0;i<1000;i++){
      result.add(i);
    }

    // assigning
    size = result.size();
    return result;
  }

  public int getSize() {
    return size;
  }
}
java arrays time-complexity space-complexity
2个回答
1
投票

将返回值(数组列表)存储在这样的变量中:Arraylist result = c.foo1(),然后在该变量上调用size(),例如:result.size()

© www.soinside.com 2019 - 2024. All rights reserved.