编写一个测试程序, 在一个链表上存储 500 万个整数, 测试分别使用iterator 和 get(index) 方法的遍历时间。
时间: 2024-10-24 16:02:34 浏览: 18
为了编写这样一个测试程序,你需要先创建一个包含500万个整数的链表,并使用两种方法(迭代器和索引访问)遍历它。这里假设我们使用的是Java的LinkedList。我们将使用Java的`System.currentTimeMillis()`来测量每次遍历的时间。
以下是一个简单的步骤说明:
1. **创建链表**: 创建一个LinkedList,初始时可以添加一些元素,然后通过循环往里填充500万个整数。
```java
List<Integer> list = new LinkedList<>();
for (int i = 0; i < 5000000; i++) {
list.add(i);
}
```
2. **迭代器遍历**: 使用Iterator遍历链表并记录开始和结束时间。
```java
long startTime = System.currentTimeMillis();
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
iterator.next();
}
long endTime = System.currentTimeMillis();
long iteratorTime = endTime - startTime;
```
3. **索引访问遍历**: 同样的,获取第一个元素开始计时,直到遍历完整个列表。
```java
startTime = System.currentTimeMillis();
for (int i = 0; i < list.size(); i++) {
list.get(i);
}
endTime = System.currentTimeMillis();
long getIndexTime = endTime - startTime;
```
4. **测量和对比**: 输出两种方法的遍历时间和比较它们的效率。
```java
System.out.println("Iterator遍历耗时: " + iteratorTime + "毫秒");
System.out.println("get(index)遍历耗时: " + getIndexTime + "毫秒");
// 对比结果
if (getIndexTime < iteratorTime) {
System.out.println("索引访问法更高效");
} else {
System.out.println("迭代器法更高效");
}
```
请注意,这只是一个基本的示例,实际运行时可能需要考虑JVM的热启动影响、垃圾回收等因素。如果你需要更精确的性能测试,建议使用专门的性能分析工具,如JMH(Java Microbenchmark Harness)。
阅读全文