前言
这三者说实话给我的感觉和C++中的STL所提供的内容是十分类似的,并且在使用的过程中也有若干共通的地方。但由于Java中会强调“接口”,所以这三者在实际使用的时候和C++中的用法也有不同之处。
Map
Map是一个散列表,它存储的内容是键值对(key-value)映射。
HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度。对于需要存储在对应HashMap中的类可以通过编译器自动生成一个hashcode函数来对其进行哈希。由于其中的元素实质上是对象,所以常见的基本类型需要使用包装类。
HashMap是无序的,内部顺序与插入时间顺序无关。
下面是其用法
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
// 添加键值对
Sites.put(1, "Google");
Sites.put(2, "Runoob");
Sites.put(3, "Taobao");
Sites.put(4, "Zhihu");
System.out.println(Sites);
// 使用get来访问
System.out.println(Sites.get(3));
// 使用remove来删除
Sites.remove(4);
// 清空可以使用clear
Sites.clear();
对于其内部的循环访问,可以使用for-each语法
Set
HashSet 实现了 Set 接口,具体的操作一般由具体类HashSet来担任。HashSet 是无序的,即不会记录插入的顺序。HashSet 中的元素实际上也是对象,一些常见的基本