import
java.time.Duration;
import
java.time.Instant;
public
class
Main {
public
static
void
main(String[] args) {
int
[] arr =
new
int
[
1000000
];
for
(
int
i =
0
; i <
1000000
; i++) {
arr[i] = i;
}
Node head =
new
Node(
0
);
Node prev = head;
for
(
int
i =
1
; i <
1000000
; i++) {
Node node =
new
Node(i);
prev.next = node;
prev = node;
}
Instant startTime = Instant.now();
int
arrSum =
0
;
for
(
int
i =
0
; i <
1000000
; i++) {
arrSum += arr[i];
}
Instant endTime = Instant.now();
Duration duration = Duration.between(startTime, endTime);
System.out.printf(
"Sum of array: %d. Time taken: %f seconds.%n"
, arrSum, duration.toMillis() /
1000.0
);
startTime = Instant.now();
int
llSum =
0
;
Node curr = head;
while
(curr !=
null
) {
llSum += curr.value;
curr = curr.next;
}
endTime = Instant.now();
duration = Duration.between(startTime, endTime);
System.out.printf(
"Sum of linked list: %d. Time taken: %f seconds.%n"
, llSum, duration.toMillis() /
1000.0
);
}
}
class
Node {
int
value;
Node next;
public
Node(
int
value) {
this
.value = value;
}
}