【轻松拿捏】Java-List、Set、Map 之间的区别是什么?

List、Set、Map 之间的区别是什么?

一、List

二、Set

三、Map


|---------------------|
| 🎈边走、边悟🎈迟早会好 |

一、List

  • 有序性 :List 保持元素的插入顺序,即元素按添加的顺序存储和访问。

  • 允许重复 :List 可以包含重复的元素。

  • 实现类 :常用的实现类包括 ArrayList、LinkedList 和 Vector。

  • 访问方式 :可以通过索引访问元素,例如 list.get(0) 获取第一个元素。

  • 用法场景:适用于需要按顺序访问元素,或频繁插入、删除元素的场景。

  • 常用方法

  • add(E e): 添加元素到列表的末尾。

  • get(int index): 获取指定位置的元素。

  • remove(int index): 移除指定位置的元素。

  • size(): 返回列表中的元素数量。

  • contains(Object o): 判断列表是否包含指定的元素。

  • indexOf(Object o): 返回指定元素在列表中的第一次出现位置。

    java 复制代码
    List<String> list = new ArrayList<>();
    list.add("Apple");
    list.add("Banana");
    list.add("Apple"); // 允许重复
    System.out.println(list.get(0)); // 输出: Apple
    System.out.println(list.size()); // 输出: 3
    System.out.println(list.contains("Banana")); // 输出: true
    list.remove(1); // 移除第二个元素

    二、Set

  • 无序性 :Set 不保证元素的顺序,元素可能按照不同的顺序存储。

  • 不允许重复 :Set 不允许包含重复的元素,每个元素都是唯一的。

  • 实现类 :常用的实现类包括 HashSet、LinkedHashSet 和 TreeSet。

  • 访问方式:没有索引,通常通过迭代器访问元素。

  • 用法场景:适用于需要保证元素唯一性,或不关心元素顺序的场景。

java 复制代码
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple"); // 不允许重复,重复的元素不会被添加
for (String fruit : set) {
    System.out.println(fruit);
}

三、Map

  • 键值对存储 :Map 存储键值对,每个键唯一对应一个值。
  • 键唯一性 :Map 中的键是唯一的,不允许重复,但值可以重复。
  • 实现类 :常用的实现类包括 HashMap、LinkedHashMap 和 TreeMap。
  • 访问方式 :通过键访问对应的值,例如 map.get(key) 获取对应的值。
  • 用法场景:适用于需要通过键快速查找值,或需要存储键值对的场景。
java 复制代码
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
map.put("Apple", 3); // 键是唯一的,后一个值会覆盖前一个值
System.out.println(map.get("Apple")); // 输出: 3
System.out.println(map.size()); // 输出: 2
System.out.println(map.containsKey("Banana")); // 输出: true
System.out.println(map.containsValue(2)); // 输出: true
map.remove("Banana");

🌟感谢支持 听忆.-CSDN博客

|--------------------|
| 🎈众口难调🎈从心就好 |

相关推荐
架构文摘JGWZ2 小时前
Java 23 的12 个新特性!!
java·开发语言·学习
拾光师3 小时前
spring获取当前request
java·后端·spring
aPurpleBerry3 小时前
neo4j安装启动教程+对应的jdk配置
java·neo4j
我是苏苏3 小时前
Web开发:ABP框架2——入门级别的增删改查Demo
java·开发语言
xujinwei_gingko3 小时前
Spring IOC容器Bean对象管理-Java Config方式
java·spring
2301_789985943 小时前
Java语言程序设计基础篇_编程练习题*18.29(某个目录下的文件数目)
java·开发语言·学习
IT学长编程3 小时前
计算机毕业设计 教师科研信息管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·毕业设计·springboot·毕业论文·计算机毕业设计选题·计算机毕业设计开题报告·教师科研管理系统
m0_571957583 小时前
Java | Leetcode Java题解之第406题根据身高重建队列
java·leetcode·题解
程序猿小D4 小时前
第二百三十五节 JPA教程 - JPA Lob列示例
java·数据库·windows·oracle·jdk·jpa
Zd085 小时前
14.其他流(下篇)
java·前端·数据库