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()and 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

感谢我刚刚关注的回复和示例,这就是 int 的来源,我会尝试一些并回复你

于 2013-03-23T11:08:31.587 回答
0

你可以使用ArrayList's 方法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)

您可以使用-method将 an 转换ArrayList为数组:http: //docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html#toArray()toArray()

于 2013-03-22T18:12:51.833 回答