复制特定阵列元素

时间:2013-03-12 15:55:44

标签: java arrays copy

我需要将数组中的特定元素复制到新数组中。例如: 一系列水果包括苹果和橙子,我想只从苹果到苹果的新阵列。

谢谢。

3 个答案:

答案 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();