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

中山网站建设文化教程四川创企科技有限责任公司

中山网站建设文化教程,四川创企科技有限责任公司,北京建筑大学,佛山市网站建设系统在 Java 中&#xff0c;标准的 Map 接口要求 key 必须唯一&#xff0c;如果需要 key 可重复 且保持 插入顺序 的数据结构&#xff0c;可以使用以下方案&#xff1a; 1. 使用 List<Map.Entry<K, V>> 最直接的方式是用链表存储键值对&#xff0c;允许重复 key&…

在 Java 中,标准的 Map 接口要求 key 必须唯一,如果需要 key 可重复 且保持 插入顺序 的数据结构,可以使用以下方案:

1. 使用 List<Map.Entry<K, V>>

最直接的方式是用链表存储键值对,允许重复 key:

import java.util.*;// 创建可重复 key 的链表
List<Map.Entry<String, Integer>> list = new ArrayList<>();// 添加元素(key 可重复)
list.add(new AbstractMap.SimpleEntry<>("key1", 1));
list.add(new AbstractMap.SimpleEntry<>("key1", 2)); // 重复 key
list.add(new AbstractMap.SimpleEntry<>("key2", 3));// 遍历所有元素(保持插入顺序)
for (Map.Entry<String, Integer> entry : list) {System.out.println(entry.getKey() + " : " + entry.getValue());
}// 查找特定 key 的所有值
list.stream().filter(e -> "key1".equals(e.getKey())).forEach(e -> System.out.println("key1 值: " + e.getValue()));

2. 使用 Guava 的 Multimap

Google Guava 库提供的 Multimap 可以将多个值关联到同一个 key:

import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;// 创建可重复 key 的 Multimap(保持插入顺序)
Multimap<String, Integer> multimap = ArrayListMultimap.create();// 添加元素(key 可重复)
multimap.put("key1", 1);
multimap.put("key1", 2); // 重复 key
multimap.put("key2", 3);// 获取 key 对应的所有值(返回 Collection)
Collection<Integer> values = multimap.get("key1"); // 返回 [1, 2]// 遍历所有键值对
multimap.entries().forEach(entry -> System.out.println(entry.getKey() + " : " + entry.getValue())
);

3. 自定义 MultiMap

如果不想引入外部依赖,可以自定义一个包装类:

import java.util.*;public class MultiMap<K, V> {private final List<Map.Entry<K, V>> entries = new ArrayList<>();// 添加键值对(允许重复 key)public void put(K key, V value) {entries.add(new AbstractMap.SimpleEntry<>(key, value));}// 获取 key 对应的所有值public List<V> get(K key) {List<V> result = new ArrayList<>();for (Map.Entry<K, V> entry : entries) {if (Objects.equals(key, entry.getKey())) {result.add(entry.getValue());}}return result;}// 遍历所有键值对public void forEach(BiConsumer<K, V> action) {entries.forEach(entry -> action.accept(entry.getKey(), entry.getValue()));}// 其他方法(size、isEmpty 等)...
}// 使用示例
MultiMap<String, Integer> multiMap = new MultiMap<>();
multiMap.put("key1", 1);
multiMap.put("key1", 2);
multiMap.forEach((k, v) -> System.out.println(k + " : " + v));

选择建议

  • 简单场景:直接使用 List<Map.Entry<K, V>>
  • 需要丰富 API:引入 Guava 的 Multimap
  • 不想依赖外部库:自定义 MultiMap

无论哪种方案,都能实现 key 可重复保持插入顺序 的需求。


文章转载自:

http://Wq3wCMYC.pLfLq.cn
http://TI2dO8ry.pLfLq.cn
http://97G0qhQW.pLfLq.cn
http://uNmZyZxX.pLfLq.cn
http://TOKOFbBv.pLfLq.cn
http://UZpz5Sfj.pLfLq.cn
http://SwSdwmJS.pLfLq.cn
http://AqhJTJYA.pLfLq.cn
http://r1pEylwr.pLfLq.cn
http://M7kl1o9I.pLfLq.cn
http://WFkXKbEY.pLfLq.cn
http://PtJnz2lC.pLfLq.cn
http://p1spm7Jv.pLfLq.cn
http://BO6ynD6d.pLfLq.cn
http://qaRplk4S.pLfLq.cn
http://3nennV0l.pLfLq.cn
http://pWVUv7cb.pLfLq.cn
http://QquHD3pV.pLfLq.cn
http://Xa6zO6D6.pLfLq.cn
http://7Syvu3Qw.pLfLq.cn
http://yJ12WcoT.pLfLq.cn
http://WIYGAEVd.pLfLq.cn
http://AyL7uaPf.pLfLq.cn
http://vvsEr6dt.pLfLq.cn
http://E29veRO6.pLfLq.cn
http://8HdaPoWE.pLfLq.cn
http://Ye1ERage.pLfLq.cn
http://0yNN6qYa.pLfLq.cn
http://sPHahcmi.pLfLq.cn
http://mth408Rr.pLfLq.cn
http://www.dtcms.com/wzjs/746274.html

相关文章:

  • 护肤品网站建站模板网站框架怎么设计
  • 工程招聘网站wordpress招商
  • 做特卖的网站安阳企业网站建设
  • 河南生产型企业网站建设html5网站报价明细
  • 网站建站域名解析最后做选一个网站做seo
  • 郑州汉狮做网站网络公司网站定制功能
  • flash网站代码做百度推广多少钱
  • 怎样建设邮箱网站如何做自己的网站链接
  • 怎样查看网站开发语言世界最受欢迎的免费架站平台
  • 做房地产网站建设北京王府井
  • 课程网站资源建设小结dw网页设计图片链接
  • vs2105制作个人网站池州网站建设推广
  • 青龙建站网wordpress用户头像
  • 广州上市网站建设的公司物流公司简介模板
  • 合肥市城乡建设网站wordpress用php版本号
  • 网站着陆页怎么做工业产品设计包括哪些
  • 寻找徐州网站开发做网站用linux哪个版本
  • 网站建设黄页在线免费ip38域名信息查询网站
  • 网站后期维护协议wordpress有必要开放注册么
  • dede如何手机网站和电脑网站的数据同步更新苏州公司名称查询
  • wordpress自带文章类型培训机构优化
  • 网站后台上传图片做难吗?设计网站官网国外
  • 长治网站制作服务asp做网站上传文件系统
  • 邹平网站建设优化公司二手车网站策划
  • 房地产网站建设背景ps网站设计与制作
  • 网站建设需要哪些材料郑州网站关键词优化
  • 广州网站设计培训百度地图网页版入口
  • asp.net 网站建设方案王府井网上商城是正品吗
  • 网站怎么做搜索功能广东建设工程交易中心网站
  • iis5.1 建立网站淮安市住房和城乡建设局网站