Все в коде псевдо:
первое, что вы можете сделать:
Fruit[] oArray = ....;
int noOfApple = 0;
for each Fruit f in oArray {
if (f is apple) {
noOfApple++;
}
}
Fruit[] newArray = new Fruit[noOfApple];
int index = 0;
for each Fruit f in oArray {
if (f is apple) {
newArray[index++] = f;
}
}
хорошо, потому что вы явно создать новый массив, так что вы должны узнать размер, прежде чем вы можете на самом деле создайте новый массив. Для того, чтобы сделать его проще, вы можете сделать что-то вроде
List<Fruit> newFruits = new ArrayList<Fruit>();
for each Fruit f in oArray {
if (f is apple) {
newFruits.add(f);
}
}
Fruit[] newArray = newFruits.toArray();
Я думаю, что намеки должны быть уже более чем достаточно
Если вы хотите сделать что-то еще круче, попробуйте использовать Guava. Вы можете сделать что-то вроде (большая часть кода действительна, с небольшим кодом psuedo):
Fruit[] result =
Iterables.filter(Array.asList(oArray),
new Predicate<Fruit>(){
@Override
boolean apply(Fruit f) { return (f is apple);}
})
.toArray();
и что вы пробовали? – SudoRahul
Создайте список, выполните итерацию массива, добавьте яблоки в список, вызовите List.toArray(). – Kai