ArrayList doscObject=[{id=21},{id=212}];
我想得到一个数组名称IdArray,它包含所有id,如上例所示输出应该如下: IdArray = {21212} 我怎样才能做到这一点?
答案 0 :(得分:1)
假设你有一个班级IdObj
:
public class IdObj {
int id;
public int getId();
}
并且docsObjects
包含IdObj
类型的对象,然后创建ArrayList
通过迭代docsObject
:我使用for 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());
}
答案 1 :(得分:1)
考虑到你想要一个普通数组而不是一个ArrayList。
int[] idList = IDObj[docsObject.size()];
for (int i=0;i<docsObject.size();i++)
{
idList[i] = docsObject.get(i).getId();
}
答案 2 :(得分:0)
这个问题没有多大意义,但我会简要介绍两种收集类型之间的工作......
阵列:
int[] idArray = {21, 212};
的ArrayList:
List<Integer> doscObject = new ArrayList<Integer>();
doscObject.add(21);
doscObject.add(212);
ArrayLists - &gt;阵列:
Integer[] idArray = doscObject.toArray(new Integer[doscObject.size()]);
数组 - &gt; ArrayList的:
Collections.addAll(doscObject, idArray);
答案 3 :(得分:0)
你需要创建一个足够大的结果数组来保存原始值中的所有值(因为数组大小是固定的,你需要在使用之前声明),并将每个值复制到新数组:
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具有映射数组的二阶函数会更容易,但它不需要手动执行。