2012-04-29 43 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); 
相关问题