gpt4 book ai didi

java - java 中关于 ArrayList 元素转换为 for 循环内另一个变量的游戏优化
转载 作者:行者123 更新时间:2023-12-02 05:16:15 25 4
gpt4 key购买 nike

这是 ArrayList 元素的用法吗:

    for(int i=0; i<array_list.size(); i++){ 
Object obj = array_list.get(i);
//do **lots** of stuff with **obj**
}

比这个更快:

    for(int i=0; i<array_list.size(); i++){ 
//do **lots** of stuff with **array_list.get(i)**;
}

最佳答案

这取决于第二个代码中调用array_list.get(i)的次数。如果只调用一次,两种方法没有区别。

如果多次调用,将值保存在变量中可能会更有效(这取决于编译器和 JIT 优化)。

第一种方法可能更高效的示例场景,使用 Oracle JDK 的 javac 编译器进行编译,假设列表包含 String 对象:

for(int i=0; i<array_list.size(); i++){ 
String obj = array_list.get(i);
System.out.println(obj);

if(!obj.isEmpty()) {
String o = obj.substring(1);
System.out.println(o + obj);
}
}

在这种情况下,obj 被保存为局部变量,并在使用时加载。

for(int i=0; i<array_list.size(); i++){ 
System.out.println(array_list.get(i));

if(!array_list.get(i).isEmpty()) {
String o = array_list.get(i).substring(1);
System.out.println(o + array_list.get(i));
}
}

在这种情况下,在字节码中观察到对 List.get 的多次调用。

关于java - java 中关于 ArrayList<Object> 元素转换为 for 循环内另一个变量的游戏优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26935172/

25 4 0