0

我有这样的代码:

public int getDistanceToNumber(int number) {
    List<Integer> tuple5 = null;
    int distanceCounter = 0;
    for (int i = 0; i < allDraws.size(); i++) {
        tuple5 = allDraws.get(i).getTupleAsList();
        if (tuple5.contains(number)) {  // autoboxing primitive ?

        }

    }

    return 0;
}

问题是 - 我应该让方法参数 Integer 像int getDistanceToNumber(Integer number)从原始到 Integer 的自动装箱只发生一次,还是没有性能问题。

循环内的这段代码运行了超过 10 万次......

4

1 回答 1

0

您应该在JMH下进行测试。

  • 您可以通过使用Integer.valueOf(int)一次并将其传递给List::contains(Object).
  • 编译器可能足够高效,可以理解number永远不会更改的内容并为您执行此操作。

其余的,如果没有更多信息(类型allDraws?),在装箱转换之前可能还有其他优化要做。

于 2018-11-11T19:39:10.090 回答