什么是在Java中迭代一小部分固定数值的首选方法?

时间:2012-08-13 10:52:43

标签: java arrays list iteration

我想要一些固定数量的变量的代码块,比如说:

MyGenericClass<T> v1,v2,v3;
/* ... */
{
    /* something with v1 */
}
{
    /* same thing with v2 */
}
{
    /* same thing with v3 */
}

我想避免代码重复。这样做的最佳方式是什么(希望不要为GC创建对象,因为这段代码会运行很多)?

这有效:

for (MyGenericClass<S> v : new MyGenericClass[] {v1,v2,v3}) {
    /* something with v - no casting */
}

带有类型安全警告,如下所示:

for (MyGenericClass<S> v : Arrays.asList(v1,v2,v3) {
    /* something with v - no casting */
}

我更喜欢哪一项?还有更好的选择吗?

1 个答案:

答案 0 :(得分:5)

这将是我的方式:

MyGenericClass<T> v1,v2,v3;
   foo(v1);
   foo(v2);
   foo(v3);
}
private void foo(MyGenericClass<T> v)
{
    /* something with v */
}

您的解决方案将创建额外的对象(第一个将创建一个数组,第二个将创建一个数组,一个列表和一个迭代器)。如果调用它,我的函数调用将由编译器内联,并且引用将存储在堆栈而不是堆中。