2012-04-29 38 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

答えて

0

ホイールの配列を作成するための式を短縮したい場合は、追加のメソッドを使用せずに簡単に得ることができます。

あなたはそうのようなファクトリメソッドを作成することができます。

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

あなただけの所定のサイズの2つの車輪を持っているとき、はるかに簡単ではありません:あなたのホイール作成文になるだろう

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 ... 
} 

それ以上のものがある場合、またはサイズがあらかじめ決められていない場合、これは読みやすくなる可能性があります。

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を持っているだけなら、あなたの声明はかなり簡単です!

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