我需要将数组中的特定元素复制到新数组中。例如: 一系列水果包括苹果和橙子,我想只从苹果到苹果的新阵列。
谢谢。
答案 0 :(得分:2)
您可以使用instanceof
运算符来检查水果是否是Apple。之后,只需对数组进行迭代,将所选元素添加到另一个数组中。
答案 1 :(得分:2)
所有psuedo代码:
你可以做的第一件事:
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();
我认为提示应该已经足够了
如果你想做更酷的事,试着用番石榴。你可以做类似的事情(大多数代码都是实际的,有点伪代码):
Fruit[] result =
Iterables.filter(Array.asList(oArray),
new Predicate<Fruit>(){
@Override
boolean apply(Fruit f) { return (f is apple);}
})
.toArray();
答案 2 :(得分:1)
我建议使用ArrayList。使用ArrayList,您可以动态地向其添加项目。
for (int i = 0; i < fruits.size(); i++)
{
if (fruits.get(i) instanceof apple)
apples.add(fruits.get(i));
}
如果你还想要一堆苹果。 Apple[] arrayOfApples = apples.ToArray();