秀代码!C# 多重map的实现!
C# 没有Multimap,map只有SortedList HashTable;这会很不方便,
但可以根据SortedList稍微加以改装,
即可实现C++的Multimap。
这里是一个例子:
--------------------编程问答-------------------- 不错,不过你这个有啥用,如果List<T>不能解决你的问题,Dictionary<T,T>应该能解决问题,如果还不行,还有DataSet --------------------编程问答-------------------- 顶 --------------------编程问答--------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Collections.Specialized;
using MyNewMultimap;
namespace MyNewMultimap
{
public class MyMultimap : SortedList
{
public MyMultimap()
{
}
public override object this[object key]
{
get
{
if (this.IndexOfKey(key) >= 0)
{
List<object> o = (List<object>)base[key];
return o;
}
return null;
}
set
{
if (this.IndexOfKey(key) >= 0)
{
List<object> o = (List<object>)this[key];
o.Add(value);
return;
}
List<object> ol = new List<object>();
ol.Add((object)value);
base[key] = ol;
}
}
}
}
namespace Multimap
{
class Program
{
static void Main(string[] args)
{
MyMultimap mm = new MyMultimap();
mm["fruit"] = "banana";
mm["fruit"] = "orange";
mm["fruit"] = "potato";
mm["programme language"] = "C++";
mm["programme language"] = "C#";
mm["programme language"] = "Delphi";
// search
int n = mm.IndexOfKey("programme language");
if(n >= 0)
{
List<object> l = (List<object>)mm["programme language"];
for (int i = 0; i < l.Count; i++)
Console.WriteLine(l[i]);
}
}
}
}
如果还不行Dictionary<T,Dictionary<T,Dictionary<T,K>>>应该能解决你的问题 --------------------编程问答-------------------- Dictionary 好像不行;List不能满足需求;DataSet没试过 --------------------编程问答-------------------- list的find不就可以实现了吗? --------------------编程问答-------------------- 麻烦,
C#泛型早就内置了,
楼主用C++用多了吧,
C#基础功不扎实 --------------------编程问答-------------------- C#封装很多了,多研究下吧 --------------------编程问答-------------------- 没用过
从来没用MAP --------------------编程问答-------------------- 6楼,7楼既然都知道了,不妨嗮嗮具体的实现机制?
贴代码出来怎么样? --------------------编程问答-------------------- 用object,和用泛型已经基本差不多了。
map 你们用的很少吗?这个可是基本的数据结构. --------------------编程问答-------------------- 别人给的 List<T> 和 Dictionary 不行就自己写个泛型类呗~ 活学活用 --------------------编程问答--------------------
using System;--------------------编程问答-------------------- 范型类 示例 代码 ; --------------------编程问答-------------------- 看的不是太懂 --------------------编程问答-------------------- 用不上,收藏 --------------------编程问答-------------------- 路过,顶一下,希望后面可以用得着。
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Collections.Specialized;
using MyNewMultimap;
namespace MyNewMultimap
{
public class MyMultimap<T> : SortedList
{
public MyMultimap()
{
}
public override object this[object key]
{
get
{
if (this.IndexOfKey(key) >= 0)
{
List<T> o = (List<T>)base[key];
return o;
}
return null;
}
set
{
if (this.IndexOfKey(key) >= 0)
{
List<T> o = (List<T>)this[key];
o.Add((T)value);
return;
}
List<T> ol = new List<T>();
ol.Add((T)value);
base[key] = ol;
}
}
}
}
namespace Multimap
{
class Program
{
static void Main(string[] args)
{
MyMultimap<string> mm = new MyMultimap<string>();
mm["fruit"] = "banana";
mm["fruit"] = "orange";
mm["fruit"] = "potato";
mm["programme language"] = "C++";
mm["programme language"] = "C#";
mm["programme language"] = "Delphi";
// search
int n = mm.IndexOfKey("programme language");
if(n >= 0)
{
List<string> l = (List<string>)mm["programme language"];
for (int i = 0; i < l.Count; i++)
Console.WriteLine(l[i]);
}
}
}
}
补充:.NET技术 , C#