내가이 프로그램을 통해 LinkedList의를 통과하는 각대 반복자에 대한 의 성능을 확인되었습니다 내가 얻을더 나은 성능 : LinkedList의 각 반복자에 대해?
public class ListTraversePerformance {
public static void main(String... args){
List<String> list = new LinkedList<String>();
for(int i=0;i<100000;i++){
list.add("Any String" + i);
}
Iterator i = list.iterator();
String x;
long t1 = System.currentTimeMillis();
for(String j: list){
x = j;
}
long t2 = System.currentTimeMillis();
while(i.hasNext()){
x= (String)i.next();
}
long t3 = System.currentTimeMillis();
System.out.print((t2-t1) + " " + (t3-t2));
}
}
OUPUT은 때마다 즉, 때때로 첫번째 루프가 빠르고, 때로는 두 번째 실행 다르다 .
는내 질문 :
나는 두 번째 반복자에 비해 속도가 느린 실행해야 각 루프에 대한 생각합니다. 나는 for each
루프에서 링크 목록은 복잡도가 O(n^2)
일 때마다 매초마다 횡단해야한다고 생각한다. 과 비교된다. 나 맞아? 그렇다면 왜 내가 예상했던대로 결과가 나오지 않습니까?
LinkedList는 항상 시작 노드에서 끝으로 이동합니다. –
아니요, 올바르지 않습니다. foreach 루프는 매번 처음부터 반복 할 필요가 없습니다. – Sneftel
@JunedAhsan 나는 그 생각을 가지고, 내 질문은 왜 각 루프가 느리게 실행되지 않습니다. – sagar