Map集合适合建模社交网络中“用户→好友列表”的映射关系,推荐使用HashMap
Map 集合适合用来建模社交网络中“用户 → 好友列表”的映射关系,尤其适用于一级好友(直接关注/互粉/好友)的快速检索。核心思路是:以用户 ID 为键(key),以该用户的一级好友 ID 集合(如 List、Set)为值(value),利用 Map 的 O(1) 平均查找性能实现高效关系查询。
用 Map 存储用户与一级好友的映射选择合适的数据结构是关键。推荐使用HashMap
若需保持插入顺序或支持双向关系(A 是 B 的好友,B 也是 A 的好友),需在添加时双向写入:map.put("u1001", set1); map.put("u1002", set2); 然后分别向 set1.add("u1002")、set2.add("u1001")实现一级好友关系圈检索给定一个用户 ID,只需一次 Map 查找即可获取其全部一级好友:链接到社交网络的动态图特效链接到社交网络的动态图特效下载检查 key 是否存在(避免空指针),如 Java 中用map.containsKey(userId)直接调用map.get(userId),返回该用户的 Set
扩展建议:轻量级关系操作支持在基础 Map 结构上,可封装几个常用方法提升实用性:addFriend(String userA, String userB):双向加入好友 Set,并确保 Map 中已初始化对应 key 的空 Set isFriend(String userA, String userB):检查 userA 的好友 Set 是否包含 userB,O(1) 判断getCommonFriends(String userA, String userB):取 userA 和 userB 好友 Set 的交集(retainAll),快速得共同好友如需持久化,可将 Map 序列化为 JSON(如 {"u1001": ["u1002","u1005"], "u1002": ["u1001"]}),便于存储或传输注意事项与边界处理实际应用中需主动应对常见异常情况:用户 ID 为空或 null 时,应提前校验并拒绝操作,防止污染 Map删除用户时,不仅要移除自身 key,还需遍历所有好友 Set 并移除该用户 ID(否则会残留脏数据)
高并发场景下,考虑用ConcurrentHashMap替代 HashMap,避免同步开销过大单纯 Map 不适合多级关系(如“朋友的朋友”),此时需图遍历(BFS/DFS),Map 只作为邻接表底层支撑
