【发布时间】:2020-05-15 18:27:54
【问题描述】:
我有下面的代码,两个类,一个是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;
}
}
【问题讨论】:
-
我建议做
int size = -1,并在你的getSize方法中做if (size == -1) size = foo1().size(); return size;但是,这看起来不像是好的设计,我建议在代码审查上提出一个问题跨度> -
请在以后更好地格式化您的代码。作为一个围绕代码构建的网站,我们赞赏适当的缩进。
-
在
foo1()中,您正在创建一个新的ArrayList并通过迭代1000次向其中添加项目。为什么你认为这个ArrayList的大小会不同于1000?如果你已经知道没有。迭代次数,这也是这个ArrayList的大小。因此,getSize()这个方法根本没有意义。 -
@Arvind Kumar Avinash 这只是一个例子,代表我在大型软件中的实际问题
-
不要用如何获得尺寸来描述您的问题,而应该描述您实际尝试做的事情。我认为您当前的设计没有任何好处。
标签: java arrays time-complexity space-complexity