Java基础---HashMap的特性

1.Map集合的特点

        Map是一个双列集合,将键映射到值的对象        

        Map集合的数据结构,只针对键有效,跟值没有关系

        一个映射不能包含重复的键,每个键最多只能映射到一个值


2.HashMap的数据结构

        哈希表结构:数组+链表

 

        通过哈希表结构配合hashCode和equals方法就可以保证键的唯一性

        键的位置如果存储的是自定义类型,要重写hashCode和equals方法,否则就可以有重复的键 


3.HashMap和Hashtable的区别

        HashMap是jdk1.2版本出现的,允许存储null键和null值

        不同步(线程不安全)        效率高

        Hashtable是jdk1.0版本出现的,不允许储存null键和null值

        同步(线程安全)        效率低

### Java集合框架全面知识点 #### 1. 集合概述 Java集合框架提供了一组用于存储和操作对象的类和接口。它主要分为三大部分:`List`、`Set` 和 `Map`,每种结构都有其特定用途和特点[^1]。 #### 2. Set 接口及其特性 `Set` 是一种不包含重复元素的集合。它的实现类主要包括 `HashSet`、`LinkedHashSet` 和 `TreeSet`。以下是它们的特点- **HashSet**: 使用哈希表来存储数据,因此不允许重复元素,并且访问速度较快。但是,`HashSet` 不保证元素的顺序[^2]。 - **LinkedHashSet**: 继承自 `HashSet`,通过维护一个双向链表来保存插入顺序,从而解决了 `HashSet` 的无序问题[^2]。 - **TreeSet**: 提供有序的 `Set` 实现,底层基于红黑树。它可以按照自然顺序或指定比较器排序[^2]。 #### 3. List 接口及其特性 `List` 是允许包含重复元素的有序集合。常见的实现有 `ArrayList`、`LinkedList` 和 `Vector`: - **ArrayList**: 底层由动态数组支持,适合随机访问场景。线程不安全,但在单线程环境下性能较高。 - **LinkedList**: 双向链表实现,适用于频繁增删的操作。相比 `ArrayList`,随机访问效率较低[^1]。 - **Vector**: 类似于 `ArrayList`,但它提供了同步机制,因而线程安全,但性能较差[^1]。 #### 4. Map 接口及其特性 `Map` 存储键值对 (key-value),其中键唯一而值可以重复。常见实现包括 `HashMap`、`LinkedHashMap` 和 `TreeMap`: - **HashMap**: 基于哈希表的数据结构,允许 null 键和多个 null 值。非线程安全。 - **LinkedHashMap**: 扩展了 `HashMap`,保持插入顺序或最近最少使用的顺序。 - **TreeMap**: 提供按键排序的功能,内部采用红黑树实现[^2]。 #### 5. 并发集合 为了应对多线程环境下的并发问题,Java 提供了一些特殊的集合类,例如 `ConcurrentHashMap` 和 `CopyOnWriteArrayList`: - **ConcurrentHashMap**: 支持高并发读写操作,在更新时仅锁定部分区域而非整个映射表。 - **CopyOnWriteArrayList**: 在每次修改时都会复制底层数组,因此非常适合读多写少的应用场景[^2]。 #### 6. 迭代器与增强型 for 循环 迭代器 (`Iterator`) 是遍历集合的标准方式之一。它定义了一个统一的方法去获取下一个元素并判断是否有更多可用项。此外,从 JDK 5 开始引入的增强型 for 循环简化了许多循环逻辑。 ```java // 使用 Iterator 遍历 ArrayList List<String> list = new ArrayList<>(); list.add("A"); list.add("B"); Iterator<String> iterator = list.iterator(); while(iterator.hasNext()) { System.out.println(iterator.next()); } // 使用增强型 for 循环 for(String str : list){ System.out.println(str); } ``` #### 7. Java 8 中的 Stream API Stream API 是 Java 8 新增的一个强大工具,能够高效地处理大量数据源上的聚合操作。比如过滤、映射以及收集结果等都可以轻松完成[^2]。 ```java import java.util.stream.Collectors; import java.util.Arrays; public class Main { public static void main(String[] args) { String result = Arrays.asList("apple", "banana", "orange").stream() .filter(s -> s.startsWith("a")) .map(String::toUpperCase) .collect(Collectors.joining(", ")); System.out.println(result); // 输出: APPLE, BANANA } } ``` ### 总结 以上是对 Java 集合框架的基础介绍及一些重要概念的理解。掌握这些内容对于参加技术面试非常有益处。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值