더블 배열에 문자열 배열을 변환합니다. 데이터는 Double[]
으로 변환되어야합니다.어떻게이 같은 문자열 배열을 한 줄
질문
는 또는 우리는 루프가 필요하고, 두 번에 각각의 값을 변환이를 달성하기 위해 자바의 한 줄 솔루션이 있습니까?
더블 배열에 문자열 배열을 변환합니다. 데이터는 Double[]
으로 변환되어야합니다.어떻게이 같은 문자열 배열을 한 줄
질문
는 또는 우리는 루프가 필요하고, 두 번에 각각의 값을 변환이를 달성하기 위해 자바의 한 줄 솔루션이 있습니까?
루프를 사용하여 구현하는 메서드를 만든 다음 메서드를 호출하면 한 줄짜리 솔루션이됩니다.
자바 API에는 buit-in 메소드가 없습니다.
저는 루프를 통해 각 값을 두 배로 변환해야한다고 생각합니다. 이것은 내가 다른 질문 중 하나에서 어떻게했는지를 보여줍니다.
for(getData : getDataArray){
double getTotal;
getTotal = getTotal + Double.parseDouble(getData);
}
return getTotal;
아이디어는 같습니다. 그것을 방법으로 바꾸고, 당신의 패러다임을 패스하면 당신은 황금색이됩니다.
for 루프에 유형이 누락 된 것을 제외하고는; 배열을 가져 오려면 (추가 할 수있는 목록과는 대조적으로) 정수 인덱스를 실제로 알아야합니다. –
필자가 제공 한 코드가 Beanshell 스크립트의 스 니프 (snip)이므로 데이터 유형이 부족하다는 점을 분명히하지 않았습니다. – Carlos
루프에 어떤 문제가 있습니까?
double[] parsed = new double[values.length];
for (int i = 0; i<values.length; i++) parsed[i] = Double.valueOf(values[i]);
은 특히 불편하지 않습니다. 또한 적절한 오류 처리를 쉽게 추가 할 수 있습니다.
물론 원하는대로 쉽게 래핑 할 수 있습니다.
OpenJDK8은 아마도 람다 식을 가져오고 Double.valueOf를 "맵"함수로 사용하면이 방법을 사용할 수 있습니다.
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
세미콜론이 누락되어서 서식을 읽기가 어려워졌습니다. 그것을 고쳤다. 이것이 핵심 자바의 일부가 아니라'org.apache.commons.collections'의 일부라는 점도 주목할 만합니다. 훌륭한 답변입니다. (당신을 +1 하겠지만 당일 투표를하지 못합니다) –
lol! 편집 해 주셔서 감사합니다! 나는이 목적을 위해 평범한 수집 물과 같은 종류입니다! –
당신은 자바가 제공하지 않는 함수형 프로그래밍으로부터 맵 연산을 원한다. 대신, 한 줄에
double[] nums = new double[guaranteedOutput.length];
for (int i = 0; i < nums.length; i++) {
nums[i] = Double.parseDouble(guaranteedOutput[i]);
}
로 루프를 가지고 : P
Double[] d=new ArrayList<Double>() {{for (String tempLongString : tempLongStrings) add(new Double(tempLongString));}}.toArray(new Double[tempLongStrings.length]);
자바 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);
을
루프가 필요합니다. – Jivings
왜 [double []'을 쓰지 않습니까? 더 빠릅니다. –
각각을 반복하고 변환하면 할 수 있습니다. – asgs