秀代码!C# 多重map的实现!

问题描述

C#没有Multimap,map只有SortedListHashTable;这会很不方便,但可以根据SortedList稍微加以改装,即可实现C++的Multimap。这里是一个例子:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Collections;usingSystem.Collections.Specialized;usingMyNewMultimap;namespaceMyNewMultimap{publicclassMyMultimap:SortedList{publicMyMultimap(){}publicoverrideobjectthis[objectkey]{get{if(this.IndexOfKey(key)>=0){List<object>o=(List<object>)base[key];returno;}returnnull;}set{if(this.IndexOfKey(key)>=0){List<object>o=(List<object>)this[key];o.Add(value);return;}List<object>ol=newList<object>();ol.Add((object)value);base[key]=ol;}}}}namespaceMultimap{classProgram{staticvoidMain(string[]args){MyMultimapmm=newMyMultimap();mm["fruit"]="banana";mm["fruit"]="orange";mm["fruit"]="potato";mm["programmelanguage"]="C++";mm["programmelanguage"]="C#";mm["programmelanguage"]="Delphi";//searchintn=mm.IndexOfKey("programmelanguage");if(n>=0){List<object>l=(List<object>)mm["programmelanguage"];for(inti=0;i<l.Count;i++)Console.WriteLine(l[i]);}}}}

解决方案

解决方案二:
不错,不过你这个有啥用,如果List<T>不能解决你的问题,Dictionary<T,T>应该能解决问题,如果还不行,还有DataSet
解决方案三:

解决方案四:
引用1楼assky124的回复:

不错,不过你这个有啥用,如果List<T>不能解决你的问题,Dictionary<T,T>应该能解决问题,如果还不行,还有DataSet

如果还不行Dictionary<T,Dictionary<T,Dictionary<T,K>>>应该能解决你的问题
解决方案五:
Dictionary好像不行;List不能满足需求;DataSet没试过
解决方案六:
list的find不就可以实现了吗?
解决方案七:
麻烦,C#泛型早就内置了,楼主用C++用多了吧,C#基础功不扎实
解决方案八:
C#封装很多了,多研究下吧
解决方案九:
没用过从来没用MAP
解决方案十:
6楼,7楼既然都知道了,不妨嗮嗮具体的实现机制?贴代码出来怎么样?
解决方案十一:
用object,和用泛型已经基本差不多了。map你们用的很少吗?这个可是基本的数据结构.
解决方案十二:
别人给的List<T>和Dictionary不行就自己写个泛型类呗~活学活用
解决方案十三:
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Collections;usingSystem.Collections.Specialized;usingMyNewMultimap;namespaceMyNewMultimap{publicclassMyMultimap<T>:SortedList{publicMyMultimap(){}publicoverrideobjectthis[objectkey]{get{if(this.IndexOfKey(key)>=0){List<T>o=(List<T>)base[key];returno;}returnnull;}set{if(this.IndexOfKey(key)>=0){List<T>o=(List<T>)this[key];o.Add((T)value);return;}List<T>ol=newList<T>();ol.Add((T)value);base[key]=ol;}}}}namespaceMultimap{classProgram{staticvoidMain(string[]args){MyMultimap<string>mm=newMyMultimap<string>();mm["fruit"]="banana";mm["fruit"]="orange";mm["fruit"]="potato";mm["programmelanguage"]="C++";mm["programmelanguage"]="C#";mm["programmelanguage"]="Delphi";//searchintn=mm.IndexOfKey("programmelanguage");if(n>=0){List<string>l=(List<string>)mm["programmelanguage"];for(inti=0;i<l.Count;i++)Console.WriteLine(l[i]);}}}}

解决方案十四:
范型类示例代码;
解决方案十五:
看的不是太懂
解决方案:
用不上,收藏
解决方案:
路过,顶一下,希望后面可以用得着。

时间: 2024-11-05 22:47:59

秀代码!C# 多重map的实现!的相关文章

基于jquery循环map功能的代码_jquery

废话少说,看代码 复制代码 代码如下: var map = { 地名: ["北京","天津","上海"], 民族: ["汉族","藏族","维吾尔族"] }; $.each(map,function(key,values){ console.log(key); $(values).each(function(){ console.log("\t" + this); }

JS自定义对象实现Java中Map对象功能的方法

这篇文章主要介绍了JS自定义对象实现Java中Map对象功能的方法,可实现类似Java中Map对象增删改查等功能,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了JS自定义对象实现Java中Map对象功能的方法.分享给大家供大家参考.具体分析如下: Java中有集合,Map等对象存储工具类,这些对象使用简易,但是在JavaScript中,你只能使用Array对象. 这里我创建一个自定义对象,这个对象内包含一个数组来存储数据,数据对象是一个Key,可以实际存储的内容! 这里Key

js中生成map对象的方法

 生成map对象的方法或许会有很多,在本文将为大家详细介绍下使用js是如何做到的,感兴趣的朋友不要错过 代码如下: var Map = function(){  this._entrys = new Array();    this.put = function(key, value){  if (key == null || key == undefined) {  return;  }  var index = this._getIndex(key);  if (index == -1) {

四种方法使Map线程安全

四种方法使Map线程安全 如果需要使 Map 线程安全,大致有这么四种方法: 1.使用 synchronized 关键字,这也是最原始的方法.代码如下 synchronized(anObject) { value = map.get(key); } JDK1.2 提供了 Collections.synchronizedMap(originMap) 方法,同步方式其实和上面这段代码相同. 2.使用 JDK1.5 提供的锁(java.util.concurrent.locks.Lock).代码如下

jQuery函数map()和each()介绍及异同点分析_jquery

方法语法:map() map(callback) 为包装集中的每一个元素调用回调函数,并将返回值收集到jQuery对象的实例中. 参数 callback (函数)回调函数,为包装集中的每个元素调用该函数. 比如,下面的代码将页面上所有div元素的id值收集到一个javascript数组中: 复制代码 代码如下: var iDs = $("div").map(function(){     return (this.id==undefined) ? null :this.id; }).g

从零开始_学_数据结构(五)——STL(map、set、list、vector)

STL容器   前注: STL(标准模板库)是一个C++的软件库,也是C++标准程序库的一部分. 这些容器,应该都是STL里面的一个类. vector封装数组.list封装链表.map和set封装二叉树   一.list 在不懂的时候,list可以理解为双向链表(很像,但事实上不是). (1)声明一个list对象: ①包含头文件list:#include<list> ②声明他:std::list<int> one; //声明一个list对象 ③需要注意,list位于std名称空间之

[设计模式]Asp.Net Forums 代码中的web设计模式

 来源: 版权所有:UML软件工程组织 作者:袁剑 摘要 本文介绍了在.NET框架下应用Web设计模式改进WebForm程序设计的一些基本方法及要点. 关键字 设计模式,ASP.NET,WebForm,MVC,Page Controller,Front Controller,Page Cache 目录 引言经典的WebForm架构设计模式MVC模式下的WebFormPage Controller模式下的WebFormFront Controller模式下的WebFormPag

Spark Shuffle过程分析:Map阶段处理流程

默认配置情况下,Spark在Shuffle过程中会使用SortShuffleManager来管理Shuffle过程中需要的基本组件,以及对RDD各个Partition数据的计算.我们可以在Driver和Executor对应的SparkEnv对象创建过程中看到对应的配置,如下代码所示: // Let the user specify short names for shuffle managers      val shortShuffleMgrNames = Map(        "sort&

Java基础-18总结Map,HashMap,HashMap与Hashtable区别,Collections工具类

你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新,欢迎阅读 学习交流请加Java帮帮交流QQ群553841695 分享是一种美德,分享更快乐! 1:Map(掌握) (1)将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.  (2)Map和Collection的区别? A:Map 存储的是键值对形式的元素,键唯一,值可以重复.夫妻对