0

継承を使用する配列があります。基本的に、食べ物と飲み物を保持し、次のような配列があると思います

allFoodAndDrink.add(new Food(parameters);
allFoodAndDrink.add(new Drink(parameters);

そのため、食べ物と飲み物の両方のタイプが呼ばれるスナック配列に格納されallFoodAndDrinkますが、特定の開始インデックスから終了インデックスまでの配列のコピーを作成したい場合は、使用するように言われました:

Arrays.copyOfRange();

しかし、次のように使用する場合:

int[] drink = Arrays.copyOfRange(allFoodAndDrink, 5, 10);

それは吐き出してエラーを出し、その提案はそれArrays.copyOf()に切り替えるときにそれを変換することであり、それから別のエラーを吐き出して前に戻ります

何か案は

4

4 に答える 4

2

とを使用しArrayList#subList()ますArrayList#toArray()

int first = ...;
int last = ...;

Foods[] drink = new Foods[last - first];
allFoodAndDrink.subList(first, last).toArray(drink); // fill the array
于 2013-03-22T18:12:57.777 に答える
1

配列ではなく意味があると仮定すると、使用してArrayListコピーできますList

allFoodAndDrink.subList(5,10);

これは「浅いコピー」であり、参照は同じオブジェクトを指すことに注意してください。

于 2013-03-22T18:15:07.313 に答える
0

ArrayListのメソッドを使用できますsublist(int fromIndex, int toIndex)

ArrayList<Foods>() list = allFoodAndDrink.subList(0, allFoodAndDrink.size()-1);

Foods[] array = (Foods[]) list.toArray();

http://docs.oracle.com/javase/6/docs/api/java/util/AbstractList.html#subList(int, int)

-methodArrayListで配列に変換できます: http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html#toArray()toArray()

于 2013-03-22T18:12:51.833 に答える
0

私がフォローしていた応答に感謝します.intがどこから来たかの例です.いくつか試してみて、あなたに戻ってきます.

于 2013-03-23T11:08:31.587 に答える