2012-07-31 4 views
0

임의의 길이 목록에있는 모든 값을 메소드에 매개 변수로 전달하는 쉬운 방법이 있습니까? 예를 들어, 다음 코드에서는 method2의 params를 params List에있는 값의 시퀀스로 만들려고합니다 (단, List 구조는 제외). 목록은 임의의 길이이므로 루프를 실행하고 목록의 각 값을 변수에 할당 한 다음 해당 변수를 method2로 전달할 수는 없습니다.리스트의 값을 메소드의 매개 변수로 쉽게 전달

void method1(List<Double> params){ 
    void method2(params...) 
} 

고마워요! ~ 라이언

+2

매개 변수를 목록으로 전달할 때 문제점은 무엇입니까? – Puce

답변

3

당신은

public void method2(Double... doubles) { 
} 

은 자세한 내용은 Java varargs documentation를 참조 선언 할 수 있습니다.

0

어때?

void method1(Double... params){ 
    method2(Arrays.asList(params)); 
} 

이 방법 2 당신이 그것을 이런 식으로 선언 할 필요가 가변 인자를받을 수 있으려면 당신이

method1(1.0); 
method1(1.0, 2.0); 
method1(1.0, 2.0, 3.0); 
method1(1.0, 2.0, 3.0, 4.0); 
1

등의 작업을 수행 할 수있게합니다 :

void method2(Double ... args) 

에서을 이 경우 args는 Double []가됩니다.

method1에서 수행해야하는 작업은 목록을 Double []로 변환하는 것입니다. 이 도움이

public static void main(String[] args) { 

    List<Double> list = new ArrayList<Double>(); 

    list.add(1.0); 
    list.add(2.0); 
    list.add(3.0); 

    method1(list); 
} 

public static void method1(List<Double> list) { 
    method2(list.toArray(new Double[] {})); 
} 

public static void method2(Double... args) { 

    for (int i = 0; i < args.length; i++) { 
     System.out.println(args[i]); 
    } 
} 

희망 :

여기에 샘플입니다!