-3

特定の要素を配列から新しい配列にコピーする必要があります。例: Fruits の配列にはリンゴとオレンジが含まれています。そこから Apples という新しい配列にリンゴのみを取得したいと考えています。

ありがとうございました。

4

3 に答える 3

2

You could make use of instanceof operator to check if a fruit is an Apple. After that simply do an iteration over the array adding the selected elements to another array.

于 2013-03-12T16:03:13.950 に答える
2

すべて疑似コードで:

あなたが最初にできること:

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 を使ってみてください。次のようなことができます (ほとんどのコードは実際のもので、少し疑似コードがあります):

Fruit[] result = 
  Iterables.filter(Array.asList(oArray), 
                   new Predicate<Fruit>(){
                     @Override
                     boolean apply(Fruit f) { return (f is apple);}
                   })
           .toArray();
于 2013-03-12T16:04:40.840 に答える
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();

于 2013-03-12T16:02:13.770 に答える