ArrayList doscObject=[{id=21},{id=212}];
我想获得一个包含所有 id 的数组名称 IdArray,如上面的示例输出应该如下所示: IdArray={21,212} 我该怎么做?
考虑到您想要一个普通数组而不是 ArrayList。
int[] idList = IDObj[docsObject.size()];
for (int i=0;i<docsObject.size();i++)
{
idList[i] = docsObject.get(i).getId();
}
假设你有一个类IdObj
:
public class IdObj {
int id;
public int getId();
}
并且docsObjects
包含类型的对象IdObj
,然后ArrayList
通过迭代创建docsObject
:我使用了forEach
for 循环的类型:
ArrayList<Integer> idList = new ArrayList<Integer>();
for (IDObj idObj in docsObject) {
idList.add(idObj.getId());
}
如果 docObjs 是(值 IdObj)的 HashMap,您可以迭代:
ArrayList<Integer> idList = new ArrayList<Integer>();
for (Map.Entry entry in docsObject.entrySet()) {
IdObj idObj = entry.getValue();
idList.add(idObj.getId());
}
您需要先创建一个足够大的结果数组来保存原始数组中的所有值(因为数组大小是固定的,您需要在使用前声明),然后将每个数组复制到新数组中:
int[] idArray = new int[doscObject.size()];
for(int i=0, max = doscObject.size(); i<max; i++){
idArray[i] = ((Map)doscObject.get(i)).get("id");
}
如果 Java 有一个用于映射数组的二阶函数会容易得多,但它没有,所以你需要手动完成。
这个问题没有多大意义,但我将简要介绍两种集合类型之间的工作......
数组:
int[] idArray = {21, 212};
数组列表:
List<Integer> doscObject = new ArrayList<Integer>();
doscObject.add(21);
doscObject.add(212);
数组列表 -> 数组:
Integer[] idArray = doscObject.toArray(new Integer[doscObject.size()]);
数组 -> 数组列表:
Collections.addAll(doscObject, idArray);