view Arrays.cs @ 0:961030992bd2

Initial commit of IBBoard libraries
author IBBoard <dev@ibboard.co.uk>
date Fri, 19 Dec 2008 11:13:48 +0000
parents
children 0352fa33ee8f
line wrap: on
line source

using System;
using System.Collections;

namespace IBBoard
{
	/// <summary>
	/// Summary description for Arrays.
	/// </summary>
	public class Arrays
	{
		public static object[] Subtract(object[] items, object[] subtract)
		{
			ArrayList arr = new ArrayList();
			arr.AddRange(items);
			
			foreach (object obj in subtract)
			{
				arr.Remove(obj);
			}

			return arr.ToArray();
		}

		public static object[] Difference(object[] items1, object[] items2)
		{
			ArrayList arr = new ArrayList();


			//Difference with as few loops as possible, so see which is shortest			
			if (items1.Length > items2.Length)
			{
				//add everything from the first list
				arr.AddRange(items1);

				foreach (object obj in items2)
				{
					//Then for each item in the second list, if it is in the list remove it
					if (arr.Contains(obj))
					{
						arr.Remove(obj);
					}
					else
					{
						//and if it isn't in the list add it
						arr.Add(obj);
					}
				}
			}
			else
			{
				//add everything from the second list
				arr.AddRange(items2);

				foreach (object obj in items1)
				{
					//Then for each item in the first list, if it is in the list remove it
					if (arr.Contains(obj))
					{
						arr.Remove(obj);
					}
					else
					{
						//and if it isn't in the list add it
						arr.Add(obj);
					}
				}
			}

			return arr.ToArray();
		}

		public static int IndexOf(object[] items, object item)
		{
			for (int i = 0; i<items.Length; i++)
			{
				if (items[i].Equals(item))
				{
					return i;
				}
			}

			return -1;
		}

		public static bool Contains(object[] items, object item)
		{
			return IndexOf(items, item) != -1;
		}
	}
}