1.DictionaryBase的使用
使用内部的hash表来实现类似c++中map的功能
using System;
using System.Collections;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Text.RegularExpressions;
public class IPAddresses : DictionaryBase
{
public IPAddresses()
{
}
public void Add(string name, string ip)
{
InnerHashtable.Add(name, ip); //添加到哈希表
}
public string Item(string name)
{
return InnerHashtable[name].ToString();
}
public void Remove(string name)
{
InnerHashtable.Remove(name);
}
}
public class Test
{
public static void Main()
{
IPAddresses myIPs=new IPAddresses(); //构建哈希表
myIPs.Add("MIKE1","192.155.12.1");
myIPs.Add("MIKE2", "191.155.12.1");
myIPs.Add("MIKE3", "193.155.12.1");
myIPs.Add("MIKE4", "195.155.12.1");
Console.WriteLine(myIPs.Item("MIKE1"));
}
}
2.从文件中读取数据存储在map中
using System;
using System.Collections;
using System.IO;
using System.Net;
public class mymap : DictionaryBase
{
public mymap()
{
}
public mymap(string txtFile)
{
string[] data;
string str;
StreamReader reader = File.OpenText(txtFile);
while (reader.Peek() != -1)
{
str = reader.ReadLine();
data = str.Split(',');
base.InnerHashtable.Add(data[0],data[1]);
}
}
public void Add(string name, string ip)
{
base.InnerHashtable.Add(name,ip);
}
public string Item(string name)
{
return base.InnerHashtable[name].ToString();
}
public void Remove(string name)
{
base.InnerHashtable.Remove(name);
}
}
public class Test
{
public static void Main()
{
mymap map = new mymap(@"D:\我的文档\visual studio 2010\Projects\StringTest\StringTest\text.txt");
DictionaryEntry[] ips=new DictionaryEntry[map.Count];
map.CopyTo(ips, 0);
for (int i = 0; i <= ips.GetUpperBound(0); i++)
{
Console.WriteLine(ips[i].Key);
Console.WriteLine(ips[i].Value);
}
}
}
3.键值对的使用KeyValuePair
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
public class Test
{
public static void Main()
{
KeyValuePair<string,int>[]gradeBook=new KeyValuePair<string, int>[10];
//构建键值对数组
gradeBook[0]=new KeyValuePair<string, int>("McMillan",99); //填充键值对
gradeBook[1] = new KeyValuePair<string, int>("Ruff", 64);
for(int i=0;i<=gradeBook.GetUpperBound(0);i++)
if(gradeBook[i].Value!=0)
Console.WriteLine(gradeBook[i].Key+" "+gradeBook[i].Value);
}
}
4.SortedList类
这也是一个容器类,可以类似访问普通数据下标的方式访问数组内容(只不过数组下标是自定义数据类型)
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
public class Test
{
public static void Main()
{
SortedList myips=new SortedList(); //初始化
myips.Add("Mike","192.168.1.1");
myips.Add("David","192.155.12.1");
myips.Add("jiajia","123.11.1.1");
Console.WriteLine(myips["jiajia"]); //输出对应的数值(注意访问方式)
foreach (Object var in myips.Keys) //遍历访问
{
Console.WriteLine(var+" "+myips[var]);
}
}
}
//通过下表访问数组
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
public class Test
{
public static void Main()
{
SortedList list=new SortedList();
list.Add("nihao",13);
list.Add("jiajia",25);
list.Add("bushi",20);
for(int i=0;i<list.Count;i++)
{
Console.WriteLine(list.GetByIndex(i)); //通过下表访问
}
}
使用内部的hash表来实现类似c++中map的功能
using System;
using System.Collections;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Text.RegularExpressions;
public class IPAddresses : DictionaryBase
{
public IPAddresses()
{
}
public void Add(string name, string ip)
{
InnerHashtable.Add(name, ip); //添加到哈希表
}
public string Item(string name)
{
return InnerHashtable[name].ToString();
}
public void Remove(string name)
{
InnerHashtable.Remove(name);
}
}
public class Test
{
public static void Main()
{
IPAddresses myIPs=new IPAddresses(); //构建哈希表
myIPs.Add("MIKE1","192.155.12.1");
myIPs.Add("MIKE2", "191.155.12.1");
myIPs.Add("MIKE3", "193.155.12.1");
myIPs.Add("MIKE4", "195.155.12.1");
Console.WriteLine(myIPs.Item("MIKE1"));
}
}
2.从文件中读取数据存储在map中
using System;
using System.Collections;
using System.IO;
using System.Net;
public class mymap : DictionaryBase
{
public mymap()
{
}
public mymap(string txtFile)
{
string[] data;
string str;
StreamReader reader = File.OpenText(txtFile);
while (reader.Peek() != -1)
{
str = reader.ReadLine();
data = str.Split(',');
base.InnerHashtable.Add(data[0],data[1]);
}
}
public void Add(string name, string ip)
{
base.InnerHashtable.Add(name,ip);
}
public string Item(string name)
{
return base.InnerHashtable[name].ToString();
}
public void Remove(string name)
{
base.InnerHashtable.Remove(name);
}
}
public class Test
{
public static void Main()
{
mymap map = new mymap(@"D:\我的文档\visual studio 2010\Projects\StringTest\StringTest\text.txt");
DictionaryEntry[] ips=new DictionaryEntry[map.Count];
map.CopyTo(ips, 0);
for (int i = 0; i <= ips.GetUpperBound(0); i++)
{
Console.WriteLine(ips[i].Key);
Console.WriteLine(ips[i].Value);
}
}
}
3.键值对的使用KeyValuePair
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
public class Test
{
public static void Main()
{
KeyValuePair<string,int>[]gradeBook=new KeyValuePair<string, int>[10];
//构建键值对数组
gradeBook[0]=new KeyValuePair<string, int>("McMillan",99); //填充键值对
gradeBook[1] = new KeyValuePair<string, int>("Ruff", 64);
for(int i=0;i<=gradeBook.GetUpperBound(0);i++)
if(gradeBook[i].Value!=0)
Console.WriteLine(gradeBook[i].Key+" "+gradeBook[i].Value);
}
}
4.SortedList类
这也是一个容器类,可以类似访问普通数据下标的方式访问数组内容(只不过数组下标是自定义数据类型)
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
public class Test
{
public static void Main()
{
SortedList myips=new SortedList(); //初始化
myips.Add("Mike","192.168.1.1");
myips.Add("David","192.155.12.1");
myips.Add("jiajia","123.11.1.1");
Console.WriteLine(myips["jiajia"]); //输出对应的数值(注意访问方式)
foreach (Object var in myips.Keys) //遍历访问
{
Console.WriteLine(var+" "+myips[var]);
}
}
}
//通过下表访问数组
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
public class Test
{
public static void Main()
{
SortedList list=new SortedList();
list.Add("nihao",13);
list.Add("jiajia",25);
list.Add("bushi",20);
for(int i=0;i<list.Count;i++)
{
Console.WriteLine(list.GetByIndex(i)); //通过下表访问
}
}
}
总结:
DictionaryBase类是用来创建用户字典的抽象类。键值对作为DictionaryEntry对象来进行存储.
SortedList类是Dictionary类的一种特殊类型,他会按照键的顺序来存储键值对。
可以通过所以的方式来访问存储在SortedList中的值.