List、Set、Map 之间的区别是什么?
1 个回答
你爱你的玫瑰是因为你在你的玫瑰上花了太多的时间!吴敏### List, Set, Map 三者的区别 #### List(对付顺序的好帮手) - **定义**:`List` 接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象。 - **特点**: - 元素是有序的,可以通过索引访问。 - 允许重复的元素。 - 常用实现类:`ArrayList`、`LinkedList`。 #### Set(注重独一无二的性质) - **定义**:`Set` 接口存储一组不允许重复的集合。不会有多个元素引用相同的对象。 - **特点**: - 元素是无序的(不保证存储顺序),但唯一。 - 不允许重复的元素。 - 常用实现类:`HashSet`、`TreeSet`、`LinkedHashSet`。 #### Map(用 Key 来搜索的专家) - **定义**:`Map` 接口使用键值对(key-value)存储。`Map` 会维护与键关联的值。 - **特点**: - 键值对的存储,键是唯一的,值可以重复。 - 典型的键是 `String` 类型,但也可以是任何对象。 - 常用实现类:`HashMap`、`TreeMap`、`LinkedHashMap`。 ### 具体示例 #### List 示例 ```java List<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("A"); // 允许重复 System.out.println(list); // 输出: [A, B, A] ``` #### Set 示例 ```java Set<String> set = new HashSet<>(); set.add("A"); set.add("B"); set.add("A"); // 不允许重复 System.out.println(set); // 输出: [A, B] ``` #### Map 示例 ```java Map<String, String> map = new HashMap<>(); map.put("key1", "value1"); map.put("key2", "value2"); map.put("key1", "value3"); // key 重复,覆盖之前的值 System.out.println(map); // 输出: {key1=value3, key2=value2} ``` ### 总结 - **List**:适用于需要保持元素顺序和允许重复的场景。 - **Set**:适用于需要保证元素唯一且不在意顺序的场景。 - **Map**:适用于需要通过键快速查找值的场景,键必须唯一,值可以重复。 通过以上总结和示例,可以更好地理解 `List`、`Set`、`Map` 三者在 Java 集合框架中的区别和应用场景。编辑于 2023-04-04 17:24 •IP属地 北京举报评论收藏
公众号进入网站体验更佳

