我使用if语句将数组传递给for循环,我希望将所有评估为true的元素添加到新数组中。我该怎么做?
答案 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
而不是使用数组通常更容易,但有时你不会有这种奢侈。