Missing Containers in C#
The .NET framework is missing containers i.e. Dictionary or Hashtable with non-unique keys here is a simple solution for that problem:
using System;
using System.Collections;
namespace NonUniqueKeyHashtable
{
public class NonUniqueHashtable : IEnumerable
{
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
private ArrayList alContainer = null;
public DictionaryEntry this [int index]
{
get
{
return (DictionaryEntry)alContainer[index];
}
set
{
alContainer[index] = value;
}
}
public NonUniqueHashtable()
{
alContainer = new ArrayList();
}
public void Add(object Key, object Value)
{
DictionaryEntry entry = new DictionaryEntry(Key, Value);
alContainer.Add(entry);
}
public NonUniqueKeyEnumerator GetEnumerator()
{
return new NonUniqueKeyEnumerator(this);
}
//inner class to Enable IEnumerator for our collection
public class NonUniqueKeyEnumerator: IEnumerator
{
private int i; //index;
private NonUniqueHashtable nuHashtable;
public NonUniqueKeyEnumerator(NonUniqueHashtable nonUniqueHashtable)
{
nuHashtable = nonUniqueHashtable;
i = -1;
}
public void Reset()
{
i = -1;
}
public bool MoveNext()
{
i++;
return(i < nuHashtable.alContainer.Count);
}
public int Current
{
get
{
return(i);
}
}
object IEnumerator.Current
{
get
{
return(Current);
}
}
}
}
public class C
{
public static void Main(string [] args)
{
NonUniqueHashtable col = new NonUniqueHashtable();
Console.WriteLine("Values in the collection are:");
col.Add("1", "t2");
col.Add("1", "t1");
col.Add("2", "t1");
foreach (int i in col)
{
Console.WriteLine( col[i].Key.ToString() + " " );
Console.WriteLine( col[i].Value.ToString() + "\n");
}
}
}
}












No comments yet... Be the first to leave a reply!