我试图添加,删除和引用我在我的主java文件中创建的数组中的项目,但我无法找出正确的语法.在actionscript中,他们有push()和pop()来添加和删除数组中的项目,在android中是否有相同的东西?
Ken*_*net 31
在Java中,数组具有固定大小(在初始化之后),这意味着您无法在数组中添加或删除项.
int[] i = new int[10];
Run Code Online (Sandbox Code Playgroud)
上面的代码片段表示整数数组的长度为10.不可能添加第十一个整数,而不重新分配对新数组的引用,如下所示:
int[] i = new int[11];
Run Code Online (Sandbox Code Playgroud)
在Java中,java.util包包含各种数据结构,可以处理从类似数组的集合中添加和删除项目.经典的数据结构Stack有push和pop的方法.
Eby*_*Eby 20
使用数组列表 http://developer.android.com/reference/java/util/ArrayList.html
Bry*_*eld 17
对于那些没有时间重构代码以用Collections 替换数组的人(例如ArrayList),有一种替代方案.与Collections 不同,数组的长度不能更改,但可以替换数组,如下所示:
array = push(array, item);
Run Code Online (Sandbox Code Playgroud)
缺点是
Object未更改,因此您必须根据需要更新变量.以下是push方法String:(
您可以创建多个push方法,一个用于String,一个用于int等)
private static String[] push(String[] array, String push) {
String[] longer = new String[array.length + 1];
for (int i = 0; i < array.length; i++)
longer[i] = array[i];
longer[array.length] = push;
return longer;
}
Run Code Online (Sandbox Code Playgroud)
这种替代方案更有效,更短,更难阅读:
private static String[] push(String[] array, String push) {
String[] longer = new String[array.length + 1];
System.arraycopy(array, 0, longer, 0, array.length);
longer[array.length] = push;
return longer;
}
Run Code Online (Sandbox Code Playgroud)
您可以Arrays.copyOf()稍加思考就可以使用它来创建一个不错的辅助函数。
public class ArrayHelper {
public static <T> T[] push(T[] arr, T item) {
T[] tmp = Arrays.copyOf(arr, arr.length + 1);
tmp[tmp.length - 1] = item;
return tmp;
}
public static <T> T[] pop(T[] arr) {
T[] tmp = Arrays.copyOf(arr, arr.length - 1);
return tmp;
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
String[] items = new String[]{"a", "b", "c"};
items = ArrayHelper.push(items, "d");
items = ArrayHelper.push(items, "e");
items = ArrayHelper.pop(items);
Run Code Online (Sandbox Code Playgroud)
结果
原稿: a,b,c
推送调用后的数组: a,b,c,d,e
弹出呼叫后的数组: a,b,c,d
| 归档时间: |
|
| 查看次数: |
247855 次 |
| 最近记录: |