Java 常用集合方法详解

devtools/2024/10/20 13:17:37/

在 Java 编程中,集合框架提供了丰富的数据结构和算法来存储和操作数据。集合框架主要包含了 ListSetMap 接口,其中 ListMap 是最常用的接口。本文将深入探讨 ListMap 接口下的集合类及其常用方法,包括实际应用示例和代码片段。

1. List 接口及其常用方法

List 接口是一个有序集合,它允许重复的元素。List 接口的实现类包括 ArrayListLinkedListVector 等。下面是 List 接口的主要实现类及其常用方法。

1.1 ArrayList

ArrayList 是一个动态数组实现的 List,提供了快速的随机访问性能。其主要方法包括:

  • add(E e)
    向列表中添加一个元素。

     

    java

    复制代码

    ArrayList<String> list = new ArrayList<>(); list.add("Hello"); list.add("World");

  • add(int index, E element)
    在指定位置插入元素。

     

    java

    复制代码

    list.add(1, "Java");

  • remove(Object o)
    删除首次出现的指定元素。

     

    java

    复制代码

    list.remove("Hello");

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

     

    java

    复制代码

    list.remove(0);

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

     

    java

    复制代码

    String item = list.get(0);

  • set(int index, E element)
    替换指定位置的元素。

     

    java

    复制代码

    list.set(1, "Programming");

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

     

    java

    复制代码

    int size = list.size();

  • contains(Object o)
    检查列表是否包含指定元素。

     

    java

    复制代码

    boolean hasJava = list.contains("Java");

  • clear()
    清空列表中的所有元素。

     

    java

    复制代码

    list.clear();

  • isEmpty()
    检查列表是否为空。

     

    java

    复制代码

    boolean empty = list.isEmpty();

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

     

    java

    复制代码

    int index = list.indexOf("Programming");

  • toArray()
    将列表转换为数组。

     

    java

    复制代码

    String[] array = list.toArray(new String[0]);

1.2 LinkedList

LinkedList 是一个双向链表实现的 List,适用于频繁插入和删除操作。其方法包括:

  • addFirst(E e)
    在链表的开头添加元素。

     

    java

    复制代码

    LinkedList<String> linkedList = new LinkedList<>(); linkedList.addFirst("Start");

  • addLast(E e)
    在链表的末尾添加元素。

     

    java

    复制代码

    linkedList.addLast("End");

  • removeFirst()
    移除链表的第一个元素。

     

    java

    复制代码

    linkedList.removeFirst();

  • removeLast()
    移除链表的最后一个元素。

     

    java

    复制代码

    linkedList.removeLast();

  • getFirst()
    获取链表的第一个元素。

     

    java

    复制代码

    String first = linkedList.getFirst();

  • getLast()
    获取链表的最后一个元素。

     

    java

    复制代码

    String last = linkedList.getLast();

  • listIterator()
    获取链表的 ListIterator。

     

    java

    复制代码

    ListIterator<String> iterator = linkedList.listIterator();

1.3 Vector

Vector 是一个线程安全的 List 实现,它的主要方法与 ArrayList 类似,不过通常不推荐使用,因为其线程安全特性在现代应用中不如 CopyOnWriteArrayList 实用。

2. Map 接口及其常用方法

Map 接口是一种映射关系的集合,它将键映射到值。Map 接口的实现类包括 HashMapTreeMapLinkedHashMap 等。下面是 Map 接口的主要实现类及其常用方法。

2.1 HashMap

HashMap 是基于哈希表的 Map 实现,不保证顺序。其主要方法包括:

  • put(K key, V value)
    将指定的值与指定的键相关联。

     

    java

    复制代码

    HashMap<String, Integer> map = new HashMap<>(); map.put("One", 1); map.put("Two", 2);

  • get(Object key)
    获取指定键所映射的值。

     

    java

    复制代码

    Integer value = map.get("One");

  • remove(Object key)
    移除指定键的映射。

     

    java

    复制代码

    map.remove("Two");

  • containsKey(Object key)
    检查是否包含指定键。

     

    java

    复制代码

    boolean hasKey = map.containsKey("One");

  • containsValue(Object value)
    检查是否包含指定值。

     

    java

    复制代码

    boolean hasValue = map.containsValue(1);

  • size()
    返回映射中的键值对数量。

     

    java

    复制代码

    int size = map.size();

  • clear()
    清空映射中的所有键值对。

     

    java

    复制代码

    map.clear();

  • keySet()
    返回映射中所有键的 Set 视图。

     

    java

    复制代码

    Set<String> keys = map.keySet();

  • values()
    返回映射中所有值的 Collection 视图。

     

    java

    复制代码

    Collection<Integer> values = map.values();

  • entrySet()
    返回映射中所有键值对的 Set 视图。

     

    java

    复制代码

    Set<Map.Entry<String, Integer>> entries = map.entrySet();

2.2 TreeMap

TreeMap 是一个基于红黑树的 Map 实现,能够保持键的自然顺序或按指定的比较器排序。其主要方法包括:

  • firstKey()
    获取映射中的最小键。

     

    java

    复制代码

    String firstKey = treeMap.firstKey();

  • lastKey()
    获取映射中的最大键。

     

    java

    复制代码

    String lastKey = treeMap.lastKey();

  • ceilingKey(K key)
    获取大于等于指定键的最小键。

     

    java

    复制代码

    String ceilingKey = treeMap.ceilingKey("SomeKey");

  • floorKey(K key)
    获取小于等于指定键的最大键。

     

    java

    复制代码

    String floorKey = treeMap.floorKey("SomeKey");

2.3 LinkedHashMap

LinkedHashMap 是一个保留插入顺序的 Map 实现。它的主要方法与 HashMap 相似,但在遍历时会按插入顺序进行。

总结

本文详细介绍了 Java 集合框架中 ListMap 接口的常用方法及其实现类。List 接口主要关注有序和重复元素的存储,而 Map 接口则用于键值对的映射。理解和掌握这些集合方法可以帮助你在 Java 编程中更高效地操作数据结构,提高代码的性能和可维护性。希望通过本文的讲解,你能够更好地运用这些集合类的方法,解决实际开发中的问题。


http://www.ppmy.cn/devtools/111298.html

相关文章

如何看待2020年的最新国际视频编解码标准H.266?

技术背景与发布 H.266&#xff0c;也被称为多功能视频编码&#xff08;Versatile Video Coding&#xff0c;简称VVC&#xff09;&#xff0c;是2020年定稿并发布的最新一代国际视频编码标准。 发布时间与机构&#xff1a;H.266由ISO/IEC MPEG和ITU-T VCEG联合制定&#xff0c;…

计算机网络(Hub 集线器、交换机、路由器)

计算机网络 匹配符Hub 集线器实现多台电脑之间的通信&#xff1a;交换机实现两个局域网之间的通信&#xff1a;路由器 OSI参考模型TCP/IP协议族家庭宽带中&#xff1a; 无线路由器IP地址NAT 网络地址转换&#xff1a;解决IP地址不足 VPN 匹配符 Hub 集线器 群发 半双工 实现…

基于ESP32S3的链接大语言模型对话模块

本实物模块从实物外观、模块组成、API申请及功能说明四部分来介绍这款基于ESP32S3的大语言模型对话模块。 1、实物外观 2、模块介绍 本硬件平台主要由三个模块组成&#xff0c;包括MAX9814录音模块、MAX98357音频功放模块和ESP32S3模块。如下图所示。 MAX9814录音模块&#…

《A Few Useful Things to Know about Machine Learning》论文导读

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl机器学习作为人工智能领域的重要分支,近年来得到了广泛的关注和应用。Pedro Domingos的经典论文《A Few Useful Things to Know about Machine Learning》为我们提供了对机器学习深入且全面的理解…

亲测好用,ChatGPT 3.5/4.0新手使用手册~

都知道ChatGPT很强大&#xff0c;聊聊天、写论文、搞翻译、写代码、写文案、审合同等等&#xff0c;无所不能~ 那么到底怎么使用呢&#xff1f;其实很简单了&#xff0c;国内AI产品发展也很快&#xff0c;很多都很好用了~ 我一直在用&#xff0c;建议收藏下来~ 有最先进、最…

iotdbtool助力时序数据库IoTDB高效运维

iotdbtool 项目简介 iotdbtool 是一个使用 Go 语言编写的命令行工具&#xff0c;基于 Kubernetes 环境&#xff0c;提供了 IoTDB 数据的备份功能。它可以从 Kubernetes 集群中的 IoTDB Pod 中提取数据&#xff0c;并将其上传到阿里云 OSS 存储桶中。 iotdbtool 支持 iotDB 单…

Java-数据结构-二叉树-基础 (o゚▽゚)o

文本目录&#xff1a; ❄️一、树形结构&#xff1a; ▶ 1、概念&#xff1a; ▶ 2、特殊的概念&#xff1a; ▶ 3、树的表示形式&#xff1a; ❄️二、二叉树&#xff1a; ▶ 1、概念&#xff1a; ▶ 2、两种特殊的二叉树&#xff1a; ➷ 1&#xff09;、满二叉树&#xff…

力扣322-零钱兑换(Java详细题解)

题目链接&#xff1a;322. 零钱兑换 - 力扣&#xff08;LeetCode&#xff09; 前情提要&#xff1a; 因为本人最近都来刷dp类的题目所以该题就默认用dp方法来做。 最近刚学完背包&#xff0c;所以现在的题解都是以背包问题为基础再来写的。 如果大家不懂背包问题的话&#…