학습용 공간

JAVA 2020.08.19 댓글 개 starmk95

JAVA) 리스트에는 for문 대신 for each 문을 사용하자

ArrayList 자료구조를 예시로 들어 설명하면

 

ArrayList.get(인덱스) 메소드를 실행하면 내부적으로 해당 인덱스를 찾기 위해 루프가 돌게 된다고 한다.

그렇기 때문에 리스트의 원소에 접근할 때,

for each문을 사용하지 않고 for문을 사용하여 index를 이용해 get으로 접근하면

이중 루프를 사용한 것이 되어 O(n^2)의 시간이 걸리게 된다.

 

그러나 애초에 for each문을 사용하여 리스트의 원소에 접근하면 get() 메소드를 사용할 필요가 없으므로

루프를 한번만 사용한 것이 되어 O(n)의 시간이 걸린다.

 

// 리스트를 for문으로 접근할 경우
for (int i=0;i<ArrayList.size();i++) { // 외부 루프
	int num = ArrayList.get(i) // get() 메소드 내부적으로 실행되는 내부 루프
} // -> 가시적으로는 for문 루프 1번이지만 실제 동작으로 생각하면 이중 루프이다.

// 리스트를 for each문으로 접근할 경우
for (int x : ArrayList) { // 루프 1번
	int num = x;
} // get() 메소드를 사용하지 않고 리스트의 원소에 접근하기 때문에 for each문으로 인한 루프 1번만 사용된다.