Java:使用HashSet及LinkedhashSet存储1000个数据,然后遍历输出,比较两个集合速度及输出数据的规律。
时间: 2024-02-15 10:02:05 浏览: 26
好的,下面是Java代码实现:
```java
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Random;
public class HashSetLinkedHashSetExample {
public static void main(String[] args) {
HashSet<Integer> hashSet = new HashSet<Integer>();
LinkedHashSet<Integer> linkedHashSet = new LinkedHashSet<Integer>();
Random random = new Random();
// 向HashSet和LinkedHashSet中添加1000个随机数
for (int i = 0; i < 1000; i++) {
int num = random.nextInt(1000);
hashSet.add(num);
linkedHashSet.add(num);
}
// 遍历HashSet并输出
System.out.println("HashSet的输出结果为:");
long startTime = System.currentTimeMillis();
Iterator<Integer> iterator1 = hashSet.iterator();
while (iterator1.hasNext()) {
System.out.print(iterator1.next() + " ");
}
long endTime = System.currentTimeMillis();
System.out.println("\nHashSet遍历时间为:" + (endTime - startTime) + "ms");
// 遍历LinkedHashSet并输出
System.out.println("\nLinkedHashSet的输出结果为:");
startTime = System.currentTimeMillis();
Iterator<Integer> iterator2 = linkedHashSet.iterator();
while (iterator2.hasNext()) {
System.out.print(iterator2.next() + " ");
}
endTime = System.currentTimeMillis();
System.out.println("\nLinkedHashSet遍历时间为:" + (endTime - startTime) + "ms");
}
}
```
程序中使用Random类生成1000个随机数,然后分别将这些数添加到HashSet和LinkedHashSet集合中;接着使用Iterator遍历这两个集合并输出。HashSet和LinkedHashSet的输出结果应该是相同的,但是遍历时间会有所不同。HashSet的遍历时间通常比LinkedHashSet要快一些,因为HashSet采用哈希表来存储元素,元素的存储位置与元素的值有关;而LinkedHashSet采用哈希表和链表来存储元素,元素的存储位置与元素的添加顺序有关,所以遍历LinkedHashSet时会比遍历HashSet更耗时。