2011-04-18 1 views
2

section 벡터를 다시 사용하는 가장 좋은 방법은 다음 중 무엇입니까? 당신은 루프 외부 section를 사용하지 않는 경우Java의 루프에서 변수를 다시 사용하는 기본 방법

Iterator<Vector> outputIter = parsedOutput.iterator(); 

while(outputIter.hasNext()) { 
    Vector section = outputIter.next(); 
} 

또는

Vector section = null; 

while(outputIter.hasNext()) { 
    section = outputIter.next(); 
} 
+0

또 다른 점은 Vector 대신 ArrayList를 사용해야한다는 점입니다. 그것은 여러 스레드에서 수정하는 것이 안전하지만 그렇게하지 않는 경우, 다음 동기화는 오버 헤드가 추가 - 벡터 동기화됩니다. –

+0

미래를 염두에 두십시오. 감사. –

+0

예,'Vector'는 90 년대 후반에서 일반적으로 아주 오래된 학교이다. –

답변

9

두 번째 방법은 변수 section이 루프 외부에서 볼 수 있음을 의미합니다. 루프 밖에서 사용하지 않는다면 그렇게 할 필요가 없으므로 첫 번째 옵션을 사용하십시오. 성능면에서 눈에 띄는 차이는 없어야합니다.

0

후 첫 번째 스타일이 바람직 할 것이다.

8

루프가 끝난 후 범위에 사용하지 않은 변수가 없으므로 두 번째 버전을 선호합니다.

그러나, 무엇

for (Vector section: parsedOutput) { 
    ... 
} 

어떻습니까?

+0

이 구문을 본 적이 없습니다. 해당 설명서에 대한 링크를 제공 할 수 있습니까? –

+0

@Alex, 이것은 "향상된 for 루프"라고 불리며 Java 5에서 소개되었습니다. – Pops

0

직관적으로 나는 솔루션의 두 번째 변형을 선택했습니다. 그러나 결국 그것은 거의 optimizier에 달려 있습니다. 어쨌든 코드가 변경 될 수 있습니다. 코드를 컴파일 한 다음 생성 된 바이트 코드를보고 무슨 일이 일어 났는지 확인하십시오. javap을 사용하여 생성 된 내용이나 사용 가능한 다른 decompiler를 볼 수 있습니다.

마지막으로 런타임 중에 코드가 다른 방법으로 최적화 될 수도 있습니다.