使用循环从另一个数组创建数组

时间:2015-03-03 19:28:08

标签: java arrays loops

我使用if语句将数组传递给for循环,我希望将所有评估为true的元素添加到新数组中。我该怎么做?

1 个答案:

答案 0 :(得分:2)

假设您有一个对象数组,并且您想要创建一个可能更小的数组,其中包含满足某些谓词的元素,那么您将面临知道生成新数组有多大的问题。您只能通过针对谓词测试每个起始元素来确定,通常您希望避免两次。解决问题的一种方法是使用List暂时保存您要收集的元素:

MyElementType[] myArray = { /* ... */ };
MyElementType[] result;
List<MyElementType> temp = new ArrayList<MyElementType>();

for (MyElementType element : myArray) {
    if (passesMyTest(element)) {
        temp.add(element);
    }
}

result = temp.toArray(new MyElementType[0]);

当然,直接使用List而不是使用数组通常更容易,但有时你不会有这种奢侈。