2012-04-29 45 views
3

填充數組..創建和我開發的應用程序最簡單的方法

class Wheel { 
    private int size; 

    Wheel(int s) { 
     size = s; 
    } 

    void spin() { 
     System.out.print(size + " inch wheel spinning, "); 
    } 

} 

public class Bicycle { 
    public static void main(String[] args) { 
     Wheel[] wa = { new Wheel(15), new Wheel(17) }; 
     for (Wheel w : wa) 
      w.spin(); 
    } 
} 

但是請提醒,我們怎麼能在更簡單的術語表達Wheel[] wa = { new Wheel(15), new Wheel(17) };

+0

請務必查看Java Collections API。集合優於數組,因爲集合(Set,List等)更容易處理。 – rob 2012-04-29 06:55:04

回答

0

如果你想要一個更短的表達式來創建一個車輪陣列,你擁有的是一個簡單的,因爲它可以得到沒有額外的方法。

你可以像這樣創建一個工廠方法:

class Wheel { 

    public static Wheel[] newWheels(int[] sizes){ 
     Wheel[] result = new Wheel[sizes.length]; 
     for(int i=0; i < sizes.length; i++) 
      result[i] = new Wheel(sizes[i]); 
     return result; 
    } 

    // ... other stuff ... 
} 

這將使你的車輪創建語句:

Wheel[] wa = Wheel.newWheels(new int[]{ 15, 17 }); 

這是不是要簡單得多,當你只有預定大小的兩個輪子,但是如果你有更多的尺寸,或者尺寸沒有預先確定,這可能會更具可讀性。

6

Wheel[] wa = { new Wheel(15), new Wheel(17) };就像你將要得到的一樣簡單。你究竟期待什麼 - 你有沒有要求它變得更簡單的問題?

它不是簡單的,但如果你想的東西,可以讓你增加更多的Wheel S,則需要分別突破出來,如...

Wheel[] wa = new Wheel[2]; 
wa[0] = new Wheel(15); 
wa[1] = new Wheel(17); 

或可能...

int[] sizes = {15,17}; 
Wheel[] wa = new Wheel[sizes.length]; 
for (int i=0;i<sizes.length;i++){ 
    wa[i] = new Wheel(sizes[i]); 
} 

這些都不是簡單的,但他們是一個要好很多,如果你有很多Wheel s到創建。

如果你只有2 Wheel s,你的陳述很簡單!

0
Wheel[] wa = { new Wheel(15), new Wheel(17) }; 

它看起來像你正在維護不同數量的車輪集合。

所以對於每一組可以創建java.util.Set<E>(如果收集不包含重複輪),或使用java.util.List<E>(副本允許)

,你可以投入array或地圖(java.util.Map<K,V>)。地圖將是更好的選擇,你可以對特定的Set or List進行更多的控制。

List<Wheel> wh1=new ArrayList<Wheel>(15); 
    List<Wheel> wh2=new ArrayList<Wheel>(17); 
    Map<String,List<Wheel>> wa=new HashMap<String,List<Wheel>>(); 
    wa.put("1stList", wh1); 
    wa.put("2ndList", wh2); 
相關問題