1. HashMap自定义实现下面是一个简化版的HashMap实现使用数组链表的方式处理哈希冲突package map; public class MyHashMap { static class Node { public int key; public int value; public Node next; public Node(int key, int value) { this.key key; this.value value; } } private Node[] table new Node[1001]; private int size; private int hashCode(int key) { return key % table.length; } public void put(int key, int value) { int index hashCode(key); // 遍历链表看key是否在链表中存在 // 如果存在就修改对应的value Node head table[index]; for (Node cur head; cur ! null; cur cur.next) { if (cur.key key) { cur.value value; return; } } // 不存在就直接头插 Node newNode new Node(key, value); newNode.next head; table[index] newNode; size; // 扩容 if ((double)size / table.length 0.75) { resize(); } } // 扩容操作 private void resize() { Node[] newTable new Node[table.length * 2]; for (int i 0; i table.length; i) { for (Node cur table[i]; cur ! null; cur cur.next) { Node newNode new Node(cur.key, cur.value); int newIndex cur.key % newTable.length; newNode.next newTable[newIndex]; newTable[newIndex] newNode; } } table newTable; } // 根据键获取值 public Integer get(int key) { int index hashCode(key); for (Node cur table[index]; cur ! null; cur cur.next) { if (cur.key key) { return cur.value; } } return null; } // 删除键值对 public void remove(int key) { int index hashCode(key); if (table[index] null) { return; } if (table[index].key key) { table[index] table[index].next; size--; return; } Node prev table[index]; Node cur table[index].next; while (cur ! null) { if (cur.key key) { prev.next cur.next; size--; } prev cur; cur cur.next; } } }2. Set集合的使用示例下面是TreeSet和HashSet的基本操作示例package set; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.TreeSet; public class Test { public static void main(String[] args) { SetString set new TreeSet(); SetString set2 new HashSet(); set.add(aaa); set.add(bbb); set.add(ccc); set.add(ddd); set.add(eee); // 删除元素 set.remove(bbb); System.out.println(set); // 获取元素个数 System.out.println(set.size()); // 判定是否为空 System.out.println(set.isEmpty()); // 清空整个集合 set.clear(); System.out.println(set); // 遍历方式1增强for循环 for (String s : set) { System.out.println(s); } // 遍历方式2迭代器 IteratorString it set.iterator(); while (it.hasNext()) { System.out.println(it.next()); } } }3. 核心实现解析3.1 HashMap实现要点哈希函数使用取模运算计算索引位置冲突解决采用链地址法每个桶使用链表存储扩容机制当负载因子超过0.75时进行扩容头插法新节点插入链表头部时间复杂度O(1)3.2 Set集合特点TreeSet基于红黑树实现元素有序HashSet基于HashMap实现元素无序共同特性不允许重复元素支持快速查找4. 使用建议在实际开发中建议优先使用Java标准库的HashMap和HashSet理解底层实现有助于优化性能根据需求选择合适的集合类型注意线程安全问题多线程环境下使用ConcurrentHashMap