以最简单的方式创建和填充数组

时间:2012-04-29 06:15:02

标签: java arrays

我正在开发应用程序..

    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) };

3 个答案:

答案 0 :(得分:6)

Wheel[] wa = { new Wheel(15), new Wheel(17) };就像你将要获得的一样简单。你到底想要什么 - 你有一个问题需要它更简单吗?

这并不简单,但是如果你想制作一些允许你添加更多Wheel的内容,你需要单独分解它,例如......

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,它们会更好。

如果你只有2 Wheel,那么你的陈述非常简单!

答案 1 :(得分: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 } );

当你只有两个预定尺寸的轮子时,这并不简单,但如果你有更多的轮子,或者尺寸没有预先确定,这可能更具可读性。

答案 2 :(得分: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);