欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > Map和Set有什么区别?

Map和Set有什么区别?

2024/10/25 2:29:58 来源:https://blog.csdn.net/2401_83418369/article/details/142445494  浏览:    关键词:Map和Set有什么区别?

1.是什么

    Map 和 Set 是 Java 集合框架中的两个不同接口,它们用于存储不同类型的数据,并具有不同的行为和用途。


Map 接口

  • 存储类型Map 接口用于存储键值对(key-value pairs),其中键是唯一的,而值可以重复。
  • 键值对:每个键值对都有一个键和一个值,键用于查找值。
  • 存储顺序Map 接口不保证元素的顺序,尽管一些实现类(如 TreeMap)会保持元素的排序。
  • 键和值:键和值可以是任何对象,包括 null
  • 操作Map 接口提供了丰富的操作,如 put(添加键值对)、get(根据键获取值)、remove(根据键删除键值对)等。

Set 接口

  • 存储类型Set 接口用于存储一组元素,其中元素是唯一的,不允许重复。
  • 元素Set 接口中的元素可以是任何对象,包括 null
  • 存储顺序Set 接口不保证元素的顺序,尽管一些实现类(如 TreeSet)会保持元素的排序。
  • 操作Set 接口提供了基本的操作,如 add(添加元素)、remove(删除元素)、contains(检查元素是否存在)等。

区别

  1. 存储类型Map 存储键值对,而 Set 存储单一的元素。
  2. 键和值Map 中的键是唯一的,而值可以重复;Set 中的元素都是唯一的。
  3. 操作Map 提供了更多的操作,如 put 和 get,而 Set 提供了基本的操作,如 add 和 remove
  4. 顺序:虽然 Map 和 Set 接口都不保证元素的顺序,但某些实现类(如 TreeMap 和 TreeSet)会保持元素的排序。

示例

假设我们有一个包含字符串的集合:

import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.TreeMap;
import java.util.TreeSet;public class MapSetExample {public static void main(String[] args) {// Map 示例HashMap<String, Integer> hashMap = new HashMap<>();hashMap.put("Apple", 1);hashMap.put("Banana", 2);hashMap.put("Cherry", 3);// Set 示例HashSet<String> hashSet = new HashSet<>();hashSet.add("Apple");hashSet.add("Banana");hashSet.add("Cherry");LinkedHashMap<String, Integer> linkedHashMap = new LinkedHashMap<>();linkedHashMap.put("Apple", 1);linkedHashMap.put("Banana", 2);linkedHashMap.put("Cherry", 3);LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();linkedHashSet.add("Apple");linkedHashSet.add("Banana");linkedHashSet.add("Cherry");TreeMap<String, Integer> treeMap = new TreeMap<>();treeMap.put("Apple", 1);treeMap.put("Banana", 2);treeMap.put("Cherry", 3);TreeSet<String> treeSet = new TreeSet<>();treeSet.add("Apple");treeSet.add("Banana");treeSet.add("Cherry");}
}

        在这个例子中,我们创建了不同类型的 Map 和 Set 实例,并添加了一些元素。由于 Map 和 Set 接口不保证元素的顺序,因此添加元素的顺序可能与打印顺序不同。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com