私はいくつかの挿入、選択、バブルソートを作成しました。彼らは、オブジェクトの配列がいっぱいですが、私は5を持っている配列を作成し、3だけでそれを埋めるときに動作するように見える、私はソート時にエラー。ここに私のソートコードがあります。配列が一杯でないときに配列を並べ替えることはできません
public class CityList {
private City[] city;
private Integer numberOfCities;
public CityList (Integer cityListSize){
this.city=new City[cityListSize];
this.numberOfCities=0;
}
public void addCity(String city){
this.city[this.numberOfCities]=new City(city);
this.numberOfCities++;
}
public String toString(){
String cityDetails=new String();
if (this.numberOfCities!=0){
cityDetails+=String.format("%-15s\n","CITY");
for(Integer i=0;i<this.numberOfCities;i++)
cityDetails+=this.city[i]+"\n";
}
else
cityDetails+="City list is empty";
return cityDetails;
}
public void sort(){
int j, i;
for(i =1; i < city.length; i++){
City temp = city[i];
j = i;
while((j>0) && ((city[j -1].getCity().compareTo(temp.getCity()))>0)){
city[j] = city[j-1];
--j;
}
city[j] = temp;
}
}
}
もっと一般的なアプローチとして、配列の最後にヌルオブジェクトのみが存在すると仮定するのではなく、ヌルオブジェクトを無視することができます。これを行う1つの方法は、配列をパックして、配列の先頭にヌル以外のオブジェクトが続き、最後にヌルオブジェクトが続くようにすることです。私はこれがJava内部の仕組みがどのように動作するのかと思います。 – rcgldr