Java程式設計【2】 -getFlyAnimal() ->accept an animal list,and return an animal list which contains only anim
今天是中秋節,不僅沒有啥可喜的事兒,反而自己把自己搞的感冒了,現在有點病怏怏的感覺。本來計劃純粹睡一天的,但是考慮到晚上可能會睡不著我就來實驗室看看電影~~既然左右無事就繼續把沒寫完的東西寫完~~開始技術!
下面是上次給出的練習:
1.Define an interface called IAnimal,it has following behavior -talk(); -walk(); -fly(); each animal will also have a Name property.
2.Implement 3 classes named Tiger,Bird,Duck,all implement IAnimal.
3.Implement a class called Zoo, it sha following behavior
- getTenAnimal() ->return 10 animals filled radndomly 3 kinds of animals
-getFlyAnimal() ->accept an animal list,and return an animal list which contains only animals can fly(like bird)
-orderAnimal() ->accept an animal,and return animals in name order.
記憶力沒錯的話,我已經將1.2.實現,3中的第一個函式getTenAnimals()也已經寫出,現在接著寫第二個函式。
第二個函式就是要實現接受一個animal list ,返回屬於bird的animal list。那麼利用list中的class.equal即可實現。
程式碼如下:
public List<Bird> getFlyAnimals(List<IAnimal> list)throws NullPointerException{ List<Bird> birds = new ArrayList<Bird>(); for (int i = 0; i < list.size(); i++) { if( list.get(i).getClass().equals(Bird.class)){ birds.add((Bird)list.get(i)); // System.out.println(list.get(i).getClass().getName()); } } return birds; }
還有最後一個函式orderAnimal(),根據Name將Animal排序,如果只是簡單的將Names排序,數組裡有Arrays.sort(judgeNames); 即可將Names由低到高的排序,但這裡同時需要將Animal型別排序。所以解決方法就是根據名字比較,但是是將Animals類排序。程式碼如下:
public List<IAnimal> orderAnimals(List<IAnimal> list){
ArrayList<String> arrayList = new ArrayList<String>();
System.out.println("接受到的名字:");
for(int i=0;i<list.size();i++){
String naString;
if( list.get(i).getClass().equals(Bird.class)){
Bird bird=(Bird)list.get(i);
naString=bird.getName();
}else if(list.get(i).getClass().equals(Duck.class)){
Duck duck=(Duck)list.get(i);
naString =duck.getName();
}else{
Tiger tiger=(Tiger)list.get(i);
naString=tiger.getName();
}
arrayList.add(naString);
System.out.println(arrayList.get(i)); //打印出接收到的animal名字
}
for(int i=0;i<arrayList.size()-1;i++){ //開始排序
for(int j=i+1;j<arrayList.size();j++){
String temp="";
if(arrayList.get(i).compareTo(arrayList.get(j) ) >=0 ){
IAnimal animal= list.get(i);
IAnimal animal2=list.get(j);
list.set(j, animal);
list.set(i, animal2);
temp=arrayList.get(j);
arrayList.set(j, arrayList.get(i));
arrayList.set(i, temp);
}
}
}
System.out.println("排序後的結果:");
for(int i=0;i<arrayList.size();i++){
System.out.println(arrayList.get(i)); //輸出排序後的結果
}
return list;
}