/*
Mastering Visual C# .NET
by Jason Price, Mike Gunderloy
Publisher: Sybex;
ISBN: 0782129110
*/
/*
Example11_3.cs illustrates the use of an ArrayList that contains
objects of the Car class
*/
using System;
using System.Collections;
// declare the Car class
class Car : IComparable
{
// declare the fields
public string model;
public int yearBuilt;
// define the constructor
public Car(string model, int yearBuilt)
{
this.model = model;
this.yearBuilt = yearBuilt;
}
// override the ToString() method
public override string ToString()
{
return "model is " + model + ", yearBuilt is " + yearBuilt;
}
// implement the Compare() method of IComparer
public int Compare(object lhs, object rhs)
{
Car lhsCar = (Car) lhs;
Car rhsCar = (Car) rhs;
if (lhsCar.yearBuilt < rhsCar.yearBuilt)
{
return -1;
}
else if (lhsCar.yearBuilt > rhsCar.yearBuilt)
{
return 1;
}
else
{
return 0;
}
}
// implement the CompareTo() method of IComparable
public int CompareTo(object rhs)
{
return Compare(this, rhs);
}
// alternative CompareTo() method that simply calls the
// CompareTo() method that comes with the int type
// (currently commented out)
/* public int CompareTo(object rhs)
{
Car rhsCar = (Car) rhs;
return this.yearBuilt.CompareTo(rhsCar.yearBuilt);
}*/
}
public class Example11_3
{
// the DisplayArrayList() method displays the elements in the
// supplied ArrayList
public static void DisplayArrayList(
string arrayListName, ArrayList myArrayList
)
{
for (int counter = 0; counter < myArrayList.Count; counter++)
{
Console.WriteLine(arrayListName + "[" + counter + "] = " +
myArrayList[counter]);
}
}
public static void Main()
{
// create an ArrayList object
ArrayList myArrayList = new ArrayList();
// add four Car objects to myArrayList using the Add() method
Console.WriteLine("Adding four Car objects to myArrayList");
Car myMR2 = new Car("MR2", 2001);
Car myBoxster = new Car("Boxster", 2001);
Car myCorvette = new Car("Corvette", 1999);
Car myThunderbird = new Car("Thunderbird", 1979);
myArrayList.Add(myMR2);
myArrayList.Add(myBoxster);
myArrayList.Add(myCorvette);
myArrayList.Add(myThunderbird);
DisplayArrayList("myArrayList", myArrayList);
// use the Contains() method to determine if myBoxster
// is in the ArrayList; if it is, then use the IndexOf()
// method to display the index
if (myArrayList.Contains(myBoxster))
{
Console.WriteLine("myArrayList does contain myBoxster");
int index = myArrayList.IndexOf(myBoxster);
Console.WriteLine("myBoxster occurs at index " + index);
}
// remove myBoxster from myArrayList
Console.WriteLine("Removing myBoxster from myArrayList");
myArrayList.Remove(myBoxster);
DisplayArrayList("myArrayList", myArrayList);
// use the Sort() method to sort myArrayList
Console.WriteLine("Using the Sort() method to sort myArrayList");
myArrayList.Sort();
DisplayArrayList("myArrayList", myArrayList);
// use the BinarySearch() method to search myArrayList for
// myCorvette
Console.WriteLine("Using the BinarySearch() method to search myArrayList\n" +
" for myCorvette");
int index2 = myArrayList.BinarySearch(myCorvette);
Console.WriteLine("Found myCorvette at index " + index2);
// use the GetRange() method to get a range of elements
// from myArrayList
Console.WriteLine("Using the GetRange() method to get two\n" +
" elements from myArrayList, starting at index 1");
ArrayList anotherArrayList = myArrayList.GetRange(1, 2);
DisplayArrayList("anotherArrayList", anotherArrayList);
// get an enumerator using the GetEnumerator() method
// and use it to read the elements in myArrayList
Console.WriteLine("Using the GetEnumerator() method to get an enumerator");
IEnumerator myEnumerator = myArrayList.GetEnumerator();
while (myEnumerator.MoveNext())
{
Console.WriteLine("myEnumerator.Current = " + myEnumerator.Current);
}
// use the Reset() method and access the first row again using MoveNext()
Console.WriteLine("Using the Reset() method and accessing\n" +
" the first row again using MoveNext()");
myEnumerator.Reset();
myEnumerator.MoveNext();
Console.WriteLine("myEnumerator.Current = " + myEnumerator.Current);
// Use a foreach statement to read the contents of myArrayList
Console.WriteLine("Using a foreach statement to read the contents of myArrayList");
foreach (Car myCar in myArrayList)
{
System.Console.WriteLine("myCar = " + myCar);
}
}
}