List和Map有什么区别?

news/2024/9/23 7:17:20 标签: java, 开发语言, intellij-idea, eclipse, 后端, 数据结构

1.是什么

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


List 接口

  • 存储类型List 接口用于存储一系列有序的元素集合,允许重复元素。
  • 元素List 中的元素可以是任何对象,包括 null
  • 存储顺序List 接口保证了元素的有序性,元素在列表中的位置称为索引,索引从 0 开始。
  • 操作List 接口提供了丰富的操作,如 add(添加元素)、remove(删除元素)、get(根据索引获取元素)等。

Map 接口

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

区别

  1. 存储类型List 存储一系列有序的元素,而 Map 存储键值对。
  2. 键和值List 中的元素可以是任意对象,而 Map 中的键是唯一的,值可以重复。
  3. 存储顺序List 接口保证了元素的有序性,而 Map 接口不保证元素的顺序。
  4. 操作List 提供了丰富的操作,如 add 和 remove,而 Map 提供了键值对的操作,如 put 和 get

示例

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

java">import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.TreeMap;

public class ListMapExample {
    public static void main(String[] args) {
        // List 示例
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("Apple");
        arrayList.add("Banana");
        arrayList.add("Cherry");

        LinkedList<String> linkedList = new LinkedList<>();
        linkedList.add("Apple");
        linkedList.add("Banana");
        linkedList.add("Cherry");

        // Map 示例
        HashMap<String, Integer> hashMap = new HashMap<>();
        hashMap.put("Apple", 1);
        hashMap.put("Banana", 2);
        hashMap.put("Cherry", 3);

        TreeMap<String, Integer> treeMap = new TreeMap<>();
        treeMap.put("Apple", 1);
        treeMap.put("Banana", 2);
        treeMap.put("Cherry", 3);
    }
}

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


http://www.niftyadmin.cn/n/5671623.html

相关文章

学习篇 | Jupyter 使用(notebook hub)

1. JupyterHub 1.1 快速尝试 jupyterhub -f/path/jupyter_config.py --no-ssl1.2 长期后台运行 bash -c "nohup jupyterhub -f/path/jupyter_config.py --no-ssl" > ~/jupyterhub.log 2>&1 &1.3 帮助 jupyterhub --help2. Jupyter Notebook 2.1 快…

python FlaskAPI+js fetchAPI 实现前后端卡号注册绑定

python FlaskAPI+js fetchAPI 实现前后端卡号注册绑定技术 在现代Web开发中,前后端的高效通信是构建交互式应用的核心。随着技术的不断进步,API已成为前后端数据交换的桥梁。本项目将通过使用 Python Flask 作为后端框架,结合 JavaScript Fetch API 实现前后端的卡号注册和绑…

2.gitlab ce 细粒度的权限控制

需求&#xff1a; 在提交merge reqeust时&#xff0c;必须指定审核人&#xff0c;并且要选审核人清单里的 有个code owners应该可以做到&#xff08;gitlab ce应该也可以用&#xff09; 下面是参考的文档 细粒度的代码权限怎么做&#xff1f;极狐GitLab 代码所有者来帮忙 -…

【C++】类和对象(下)相关练习

1. 求123...n 题目要求和&#xff0c;但是像循环&#xff0c;递归&#xff0c;求和公式这样的方法都不让用&#xff0c;这种情况下我们最先想到的就是static成员变量的使用。我们每创建一个类对象就会调用一下构造函数&#xff0c;加上static修饰后出局部作用域不会销毁&#x…

回归预测 | Matlab实现ReliefF-XGBoost多变量回归预测

回归预测 | Matlab实现ReliefF-XGBoost多变量回归预测 目录 回归预测 | Matlab实现ReliefF-XGBoost多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.ReliefF-xgboost回归预测代码&#xff0c;对序列数据预测性能相对较高。首先通过ReleifF对输入特征计算权…

责任链模式实现规则校验

1、项目中责任链模式实战 我们使用责任链模式实现对订单中参数的校验&#xff0c;首先校验订单id是否为空&#xff0c;然后校验下单人是否为空&#xff0c;最后检验收获地址是否为空。业务的流程图如下所示&#xff1a; 针对上述的业务&#xff0c;我们使用责任链的模式来实现…

【d47_2】【Java】【力扣】1791.找出星型图的中心节点

思路 直接判断 edges[0][0] edges[0][1] edges[1][0] edges[1][1] 谁重复了 例如&#xff1a; [ [1,2] [2,3] ....],那么中心节点一定是2 代码 class Solution {public int findCenter(int[][] edges) {for (int i0;i<1;i){if (edges[1][0]edges[0][i]) {return edg…

zabbix email 告警

配置媒介、触发器动作&#xff08;动作、操作&#xff09; 为用户 定义媒体&#xff0c;比如电子邮件地址 动作 - 条件