我正在创建一个需要支持两种方法的数据类型:
length(int v, int w)
length(Iterable<Integer> v, Iterable<Integer> w)
第一个是第二个方法的特例,我想重用代码。如何有效地将整数转换为Iterable对象?
到目前为止,我使用了一个ArrayList。
ArrayList<Integer> a = new ArrayList<Integer>(); a.add(v);
ArrayList<Integer> b = new ArrayList<Integer>(); b.add(w);
return length(a,b);
感谢。
答案 0 :(得分:0)
为什么要使用相同的方法?我认为最好使用两种不同的方法,这就是重载的目的。
当你使用Iterable
你必须使用java的自动装箱来创建Integer
然后创建ArrayList
时,它比使用两个不同的方法更糟糕,也让代码更简单到读。
但是如果你只想使用Iterable,我会使用这段代码(使用较少的代码)或@sisyphus代码:
length(Arrays.asList(1), Arrays.asList(2));
将varargs
与ArrayList
转换合并后,您可以以一种很酷的方式创建ArrayList
。
在这里你可以看到工作代码: code Iterable