我来自一个动作脚本,我对如何在java中使用数组感到困惑。
在我的主要活动中,我创建了一个名为mIcons的空数组,如此
private Array mIcons;
现在我想通过使用我的DataBaseHelper类中的方法来设置该数组的值,如下所示:
public Array getHomeScreenIcons() {
Array iconList;
// Select All Query
String selectQuery = "SELECT * FROM " + homeIcons;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
的 iconList.push(的Integer.parseInt(cursor.getString(0))); 的
} while (cursor.moveToNext());
}
Log.v(TAG, "List Created");
// return contact list
}
到目前为止,跳出代码的粗线是问题..我如何推送到我的阵列
然后我将要从我的主要活动using.length
为该数组运行for循环答案 0 :(得分:7)
使用 ArrayList 参数化为您想要的任何类型
ArrayList<Integer> iconList = new ArrayList<Integer>();
添加
iconList.add(Integer.parseInt(cursor.getString(0)));
使用
进行迭代for (int i: iconList)
{
// i is your entire array starting at index 0
}
或强>
for (int i=0; i< iconList.size(), i++)
{
}
答案 1 :(得分:2)
您可能正在考虑ArrayList
private ArrayList<String> iconList = ArrayList<String>();
iconList.add("Stuff");
然后再循环
for (int i=0; i<iconList.size(); i++) {
String newStuff = iconList.get(i);
}
答案 2 :(得分:1)
你可能应该阅读一些基本的java教程来熟悉数组的语法和功能。 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html可能是一个很好的起点。
查看您的具体问题 -
您通常不希望以您的方式使用Array类。它更像是一个助手类。此外,您似乎要使用堆栈语义,而您可能希望使用堆栈。
首先,数组: 你声明一个这样的数组:
Type[] myArray = new Type[arraySize];
然后你用索引来访问它:
Type myThingFromArray = myArray[myArrayIndex];
你把东西放进去就像这样:
myArray[myTargetIndex] = myObjectOfTypeType;
java中的原始数组具有静态大小,并且不易增长。对于大多数应用程序,最好使用Collections框架的成员。如果你正在积极寻找堆栈(当你提到推送时),那么你可以使用Stack<Integer>
并拥有所有常规堆栈操作。
使用现代集合类的另一个好处是,您可以使用for-each构造迭代您的集合,这消除了一些常规的样板。一个例子:
public ArrayList<Integer> iconList;
public Array getHomeScreenIcons() {
Array iconList = new ArrayList<Integer>();
// Select All Query
String selectQuery = "SELECT * FROM " + homeIcons;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
iconList.add(Integer.parseInt(cursor.getString(0)));
} while (cursor.moveToNext());
}
Log.v(TAG, "List Created");
// return contact list
//Iterate like so:
for (Integer i : iconList){
System.out.println("Here's all integers in the icon-list: " + i);
}
}
答案 3 :(得分:0)
您可以使用Java定义数组:
int[] intArray = new int[3]; // array for three ints
String[] stringArray = new String[10]; // array for 10 Strings
因此,对于您的代码,您可以执行以下操作:
if (cursor.moveToFirst()) {
int[] iconList = new int[cursor.getCount()];
int index = 0;
do {
iconList[index] = Integer.parseInt(cursor.getString(0));
index++;
} while (cursor.moveToNext());
}
之后你可以像这样遍历数组:
for (int icon : iconList) {
// Do something with icon
}