-4
 ArrayList doscObject=[{id=21},{id=212}];

我想获得一个包含所有 id 的数组名称 IdArray,如上面的示例输出应该如下所示: IdArray={21,212} 我该怎么做?

4

4 回答 4

1

考虑到您想要一个普通数组而不是 ArrayList。

int[] idList = IDObj[docsObject.size()];
for (int i=0;i<docsObject.size();i++)
{
    idList[i] = docsObject.get(i).getId();
}
于 2013-02-11T22:11:48.433 回答
1

假设你有一个类IdObj

public class IdObj {
   int id;
   public int getId();
}

并且docsObjects包含类型的对象IdObj,然后ArrayList 通过迭代创建docsObject:我使用了forEachfor 循环的类型:

   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()); 
    }
于 2013-02-11T22:06:06.857 回答
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 有一个用于映射数组的二阶函数会容易得多,但它没有,所以你需要手动完成。

于 2013-02-11T23:06:57.363 回答
0

这个问题没有多大意义,但我将简要介绍两种集合类型之间的工作......

数组:

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); 
于 2013-02-11T22:09:04.077 回答