hashmap ,treemap,set
时间: 2023-10-29 13:05:31 浏览: 97
hashmap、treemap、set 都是 Java 中的集合类,它们的主要区别在于底层数据结构和使用场景。
HashMap 是基于哈希表实现的,它可以存储键值对,并且支持快速的插入、查找和删除操作。HashMap 中的键和值都可以为 null,但是 HashMap 不是线程安全的。
TreeMap 是基于红黑树实现的,它可以存储键值对,并且支持按照键的自然顺序或者指定的比较器进行排序。TreeMap 中的键和值都不能为 null,但是 TreeMap 是线程安全的。
Set 是一种不允许重复元素的集合,它可以用来去重。Java 中提供了多种 Set 的实现,比如 HashSet、TreeSet、LinkedHashSet 等。其中 HashSet 是基于哈希表实现的,TreeSet 是基于红黑树实现的,LinkedHashSet 是基于哈希表和链表实现的。
相关问题
创建一个类,实现如下功能 1、测试set容器的功能,可以使用hashset和treeset,向容器中输入20个随机数,使用迭代器遍历输出 2、测试map容器的功能,可以使用hashmap和treemap,向容器中输入20个随机数,遍历输入map的key和value
下面是一个实现上述功能的Java类:
```java
import java.util.*;
public class ContainerTest {
public static void main(String[] args) {
// 测试set容器
Set<Integer> hashSet = new HashSet<>();
Set<Integer> treeSet = new TreeSet<>();
// 向set容器中输入20个随机数
Random random = new Random();
for (int i = 0; i < 20; i++) {
int num = random.nextInt(100);
hashSet.add(num);
treeSet.add(num);
}
// 使用迭代器遍历输出set容器中的元素
System.out.println("HashSet:");
Iterator<Integer> hashSetIterator = hashSet.iterator();
while (hashSetIterator.hasNext()) {
System.out.print(hashSetIterator.next() + " ");
}
System.out.println();
System.out.println("TreeSet:");
Iterator<Integer> treeSetIterator = treeSet.iterator();
while (treeSetIterator.hasNext()) {
System.out.print(treeSetIterator.next() + " ");
}
System.out.println();
// 测试map容器
Map<Integer, String> hashMap = new HashMap<>();
Map<Integer, String> treeMap = new TreeMap<>();
// 向map容器中输入20个随机数
for (int i = 0; i < 20; i++) {
int num = random.nextInt(100);
hashMap.put(num, "value" + num);
treeMap.put(num, "value" + num);
}
// 遍历输出map容器中的key和value
System.out.println("HashMap:");
for (Map.Entry<Integer, String> entry : hashMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
System.out.println("TreeMap:");
for (Map.Entry<Integer, String> entry : treeMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
```
上面的代码中,我们先创建了两个set容器(一个HashSet和一个TreeSet),并向其中输入了20个随机数。然后使用迭代器遍历输出了容器中的元素。
接下来,我们又创建了两个map容器(一个HashMap和一个TreeMap),并向其中输入了20个随机数。最后,使用entrySet()方法获取map容器中的key-value对,并遍历输出了它们。
阅读全文