2012-02-01 3 views
6

더블 배열에 문자열 배열을 변환합니다. 데이터는 Double[]으로 변환되어야합니다.어떻게이 같은 문자열 배열을 한 줄

질문
는 또는 우리는 루프가 필요하고, 두 번에 각각의 값을 변환이를 달성하기 위해 자바의 한 줄 솔루션이 있습니까?

+1

루프가 필요합니다. – Jivings

+0

왜 [double []'을 쓰지 않습니까? 더 빠릅니다. –

+0

각각을 반복하고 변환하면 할 수 있습니다. – asgs

답변

6

루프를 사용하여 구현하는 메서드를 만든 다음 메서드를 호출하면 한 줄짜리 솔루션이됩니다.

자바 API에는 buit-in 메소드가 없습니다.

0

저는 루프를 통해 각 값을 두 배로 변환해야한다고 생각합니다. 이것은 내가 다른 질문 중 하나에서 어떻게했는지를 보여줍니다.

for(getData : getDataArray){ 
double getTotal; 
getTotal = getTotal + Double.parseDouble(getData); 
} 
return getTotal; 

아이디어는 같습니다. 그것을 방법으로 바꾸고, 당신의 패러다임을 패스하면 당신은 황금색이됩니다.

+0

for 루프에 유형이 누락 된 것을 제외하고는; 배열을 가져 오려면 (추가 할 수있는 목록과는 대조적으로) 정수 인덱스를 실제로 알아야합니다. –

+0

필자가 제공 한 코드가 Beanshell 스크립트의 스 니프 (snip)이므로 데이터 유형이 부족하다는 점을 분명히하지 않았습니다. – Carlos

0

루프에 어떤 문제가 있습니까?

double[] parsed = new double[values.length]; 
for (int i = 0; i<values.length; i++) parsed[i] = Double.valueOf(values[i]); 

은 특히 불편하지 않습니다. 또한 적절한 오류 처리를 쉽게 추가 할 수 있습니다.

물론 원하는대로 쉽게 래핑 할 수 있습니다.

OpenJDK8은 아마도 람다 식을 가져오고 Double.valueOf를 "맵"함수로 사용하면이 방법을 사용할 수 있습니다.

1
CollectionUtils.collect(guaranteedOutput, new Transformer() { 
     public Object transform(Object i) { 
      return Double.parseDouble(i); 
     } 
}); 

편집

이 JavaSDK에는이 있음을 유의하십시오 없습니다! 내가 사용하고있다 http://commons.apache.org/collections/apidocs/org/apache/commons/collections/CollectionUtils.html

+1

세미콜론이 누락되어서 서식을 읽기가 어려워졌습니다. 그것을 고쳤다. 이것이 핵심 자바의 일부가 아니라'org.apache.commons.collections'의 일부라는 점도 주목할 만합니다. 훌륭한 답변입니다. (당신을 +1 하겠지만 당일 투표를하지 못합니다) –

+0

lol! 편집 해 주셔서 감사합니다! 나는이 목적을 위해 평범한 수집 물과 같은 종류입니다! –

1

당신은 자바가 제공하지 않는 함수형 프로그래밍으로부터 맵 연산을 원한다. 대신, 한 줄에

double[] nums = new double[guaranteedOutput.length]; 
for (int i = 0; i < nums.length; i++) { 
    nums[i] = Double.parseDouble(guaranteedOutput[i]); 
} 
5

로 루프를 가지고 : P

Double[] d=new ArrayList<Double>() {{for (String tempLongString : tempLongStrings) add(new Double(tempLongString));}}.toArray(new Double[tempLongStrings.length]); 
19

자바 8 Stream API은이 작업을 수행 할 수 있습니다 :

double[] doubleValues = Arrays.stream(guaranteedOutput) 
         .mapToDouble(Double::parseDouble) 
         .toArray(); 

더블 콜론 방법을 참조로 사용된다. Read more here.

import java.util.Arrays;

UPD를 잊지 않는 코드를 사용하기 전에 : 당신은 두 배로 배열을 캐스팅 할 경우 []가 아닌 두 배로 [], 다음과 같은 코드를 사용할 수 있습니다

Double[] doubleValues = Arrays.stream(guaranteedOutput) 
         .map(Double::valueOf) 
         .toArray(Double[]::new); 
관련 문제