2012-04-29 3 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 }); 

만 일정 크기의 두 바퀴가있을 때 훨씬 간단하지 않다 : 여러분의 휠 생성 문을 만들 것

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