如果我有:
public static int[] leftHalf(int[] array)
{
int size1 = array.length / 2;
int[] left = new int[size1];
for (int i = 0; i < size1; i++) {
left[i] = array[i];
}
return left;
}
Run Code Online (Sandbox Code Playgroud)
这相当于
public static ArrayList<T> leftHalf(ArrayList<T> list)
{
int sizeLeft = list.size()/2;
ArrayList<T> left = new ArrayList<T>(sizeLeft);
for(int i=0; i<sizeLeft; i++)
{
left.add(list.get(i));
}
return left;
}
Run Code Online (Sandbox Code Playgroud)
我认为添加部分是棘手的,因为ArrayList在大小和容量等方面具有不同的属性.转换是否正确?
除了你传入的东西int[],并且ArrayList绑定到任何对象之外,这两种方法实际上是等价的.
虽然,第二种形式可以大大简化,因为ArrayList有一个方便的集合复制构造函数.您也可以获取传入列表的子列表,使其成为一个单行程序,完成与迭代部分相同的操作.
public static <T> List<T> leftHalf(List<T> list) {
return new ArrayList<T>(list.subList(0, list.size() / 2));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |