问题描述
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]);}}}}
解决方案十四:
范型类示例代码;
解决方案十五:
看的不是太懂
解决方案:
用不上,收藏
解决方案:
路过,顶一下,希望后面可以用得着。