此方法必須從2個索引點的傳遞數組中刪除重複的元素。但是,我瞭解到我們不允許使用Arraylist或LinkedList,只能使用Arrays。我該如何做這項工作?使用數組而不是列表Java
public Animal[] removeDuplicateAnimals(Animal[] animals, int fromIndex, int toIndex) {
int constFromIndex = fromIndex;
ArrayList<Animal> uniqueAnimals = new ArrayList<Animal>();
Animal[] uniqueAnimalsArray = new Animal[0];
uniqueAnimals.addAll(Arrays.asList(Arrays.copyOfRange(animals, 0, fromIndex)));
boolean existingFlag;
while (fromIndex < toIndex) {
existingFlag = false;
if(uniqueAnimals.size() == 0)
uniqueAnimals.add(animals[fromIndex]);
else {
int j = (constFromIndex - 1) > 0 ? (constFromIndex - 1): 0;
for (; j < uniqueAnimals.size(); j++)
if(uniqueAnimals.get(j).equals(animals[fromIndex])) {
existingFlag = true;
break;
}
if(!existingFlag)
uniqueAnimals.add(animals[fromIndex]);
}
fromIndex++;
}
uniqueAnimals.addAll(Arrays.asList(Arrays.copyOfRange(animals, toIndex, animals.length)));
return uniqueAnimals.toArray(uniqueAnimalsArray);
}
使用「HashSet的構造函數」與「收藏」參數有關其將數組列表爲「Arrays.asList()」 .. – 2014-10-22 03:47:49
基本計劃:創建一個數組,其大小爲'animals.length'。不用'ArrayList.add'來添加一個元素,而是使用'resultArray [resultIndex ++] ='元素來添加。當你完成後,你想要返回的數組可能比'animals'短,所以你可以使用'Arrays.copyOfRange'來返回第一個多個元素。我想你可以弄清楚細節。 – ajb 2014-10-22 03:57:36