当前位置: 首页 > news >正文

蓝桥杯常用的APi

创建ArrayList和LinkedList

在 Java 中,ArrayListLinkedList 是两种常用的集合类,它们都实现了 List 接口。它们的创建方式和底层实现有所不同,适用的场景也各有特点。以下是它们的详细介绍和区别。

ArrayList 和 LinkedList 的区别

1.底层实现
  • ArrayList:基于动态数组实现,底层是一个数组。

  • LinkedList:基于双向链表实现,底层是一个链表结构。

2.性能差异
  • 随机访问

    • ArrayList:通过索引访问元素非常快,时间复杂度为 O(1)

    • LinkedList:通过索引访问元素较慢,因为需要从头或尾遍历到指定位置,时间复杂度为 O(n)

  • 插入和删除

    • ArrayList:在中间位置插入或删除元素较慢,因为需要移动大量元素,时间复杂度为 O(n)

    • LinkedList:在中间位置插入或删除元素较快,因为只需要调整指针,时间复杂度为 O(1)(前提是已经找到目标位置)。

  • 内存占用

    • ArrayList:内存占用相对较小,因为每个元素只存储数据本身。

    • LinkedList:内存占用较大,因为每个节点需要存储数据和前后指针。

3.适用场景
  • ArrayList

    • 适合需要频繁随机访问的场景。

    • 适合数据量较大且插入和删除操作较少的场景。

    • 适合需要动态数组功能的场景。

  • LinkedList

    • 适合需要频繁插入和删除的场景。

    • 适合需要实现队列或栈的场景(LinkedList 提供了额外的方法,如 addFirst()removeLast() 等)。

4.线程安全性
  • ArrayListLinkedList 都不是线程安全的。如果需要线程安全的列表,可以使用 Collections.synchronizedList()CopyOnWriteArrayList

5. 总结
特性ArrayListLinkedList
底层实现动态数组双向链表
随机访问性能O(1)(快)O(n)(慢)
插入/删除性能O(n)(慢)O(1)(快,前提是找到目标位置)
内存占用较小较大
适用场景随机访问频繁、插入删除较少插入删除频繁、实现队列或栈

Set接口

Set集合不允许存储重复的元素,常用的实现类有HashSet和TreeSet。

Map接口

Map 是 Java 中的一个接口,用于存储键值对(Key-Value)的数据结构。它的每个元素由一个键(Key)和一个值(Value)组成,键是唯一的,而值可以重复。Map 提供了根据键快速查找值的能力,非常适合需要关联数据的场景。

1. Map 的基本概念

  • 键(Key):用于唯一标识一个条目。一个键在 Map 中只能出现一次。

  • 值(Value):与键关联的数据。

  • 键值对(Entry):键和值的组合。

2. Map 的常用实现类

  • HashMap:基于哈希表实现,提供快速的插入、删除和查找操作。键和值都可以为 null(但一个键只能有一个 null)。

  • LinkedHashMap:基于哈希表和双向链表实现,保持插入顺序。

  • TreeMap:基于红黑树实现,按键的自然顺序或自定义顺序排序。

  • Hashtable:与 HashMap 类似,但线程安全,不支持 null 键或值(已过时,推荐使用 ConcurrentHashMap)。

  • ConcurrentHashMap:线程安全的哈希表实现,适合高并发场景。

3. Map 的主要方法

以下是一些常用的 Map 接口方法:

  • put(K key, V value):将键值对插入到 Map 中。

  • get(Object key):通过键获取对应的值。

  • remove(Object key):通过键删除对应的键值对。

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

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

  • keySet():返回包含所有键的 Set

  • values():返回包含所有值的 Collection

  • entrySet():返回包含所有键值对的 Set

  • size():返回 Map 中的键值对数量。

  • clear():清空 Map

4.Map 的适用场景

    • 关联数据:例如存储用户 ID 和用户信息。

    • 缓存:通过键快速查找值。

    • 统计频率:例如统计单词出现的次数。

常用类

1.String类

String类提供了许多用于字符串操作的方法。

2.Math类

Math类提供了许多数学运算的方法。

3.BigInteger类

BigInteger类用于处理任意精度的整数运算。

4.LocalDate类

LocalDate类用于处理日期。

相关文章:

  • spatk-sql核心
  • ngx_conf_handler - worker_connections 1024
  • OpenResty与Nginx的功能对比分析
  • visual studio 如何在 release 模式下调试
  • 中美电力标准差异下电机运行的影响及应对策略
  • 接口和抽象的区别?日常使用场景
  • WINUI——Background颜色使用小结
  • 2 cline 提示词工程指南-记忆库
  • 基于PySide6与pycatia的CATIA智能倒角工具开发全解析
  • 4月15号
  • 欧冠002:阿斯顿维拉 vs 巴黎圣日耳曼,维拉强攻致防线大开
  • SP B\nRebuild Priorit> 如何用python去掉\n
  • 用python比较两个mp4是否实质相同
  • VLAN的知识
  • Enovia许可优化技巧
  • Dockerfile 文件常见命令及其作用
  • 微服务最佳实践:全链路可用性保障体系
  • 06- 服务网格实战:从 Istio 核心原理到微服务治理升级
  • 案例实战LangChain的核武器-chain
  • WPS JS宏编程教程(从基础到进阶)-- 第七部分:JS对象在WPS中的应用
  • 万斯偕印裔妻子访问印度,4天行程能否推进美印贸易谈判?
  • 北京理工大学解除宫某聘用关系,该教授此前被指骚扰猥亵学生
  • 95后男中音胡斯豪敲开芝加哥抒情歌剧院大门
  • 白宫慌了!将设工作组紧急处理对中国加征关税危机
  • 三一重工去年净利增逾三成至59.75亿,拟分红超30亿元
  • 皓元医药郑保富:共创、共赢、共享,跨域协作推动生物医药创新