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");
}
}
}
}

Twitter Digg Delicious Stumbleupon Technorati Facebook Email

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