蓝桥杯常用的APi
创建ArrayList和LinkedList
在 Java 中,ArrayList 和 LinkedList 是两种常用的集合类,它们都实现了 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.线程安全性
-
ArrayList和LinkedList都不是线程安全的。如果需要线程安全的列表,可以使用Collections.synchronizedList()或CopyOnWriteArrayList。
5. 总结
| 特性 | ArrayList | LinkedList |
|---|---|---|
| 底层实现 | 动态数组 | 双向链表 |
| 随机访问性能 | 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类用于处理日期。

