Csharp/CSharp Tutorial/Data Structure/ArrayList object
Версия от 15:31, 26 мая 2010; (обсуждение)
Содержание
- 1 Add object with IComparable interface implementation to an ArrayList
- 2 Add reference objects to ArrayList
- 3 Add user-defined object to an ArrayList
- 4 ArrayList and your own object: Add objects to ArrayList
- 5 ArrayList and your own object: Get an enumerator using the GetEnumerator() method and use it to read the object elements in ArrayList
- 6 ArrayList and your own object: remove an object from ArrayList
- 7 ArrayList and your own object: Use the BinarySearch() method to search myArrayList for an object
- 8 ArrayList and your own object: Use the Contains() method to determine if an object is in the ArrayList
- 9 ArrayList and your own object: Use the GetRange() method to get a range of object elements from ArrayList
- 10 ArrayList and your own object: use the IndexOf() method to display the index of an object
- 11 ArrayList and your own object: Use the Sort() method to sort objects in the ArrayList
Add object with IComparable interface implementation to an ArrayList
using System;
using System.Collections;
// Implement the non-generic IComparable interface.
class Product : IComparable {
string name;
double cost;
int onhand;
public Product(string n, double c, int h) {
name = n;
cost = c;
onhand = h;
}
public override string ToString() {
return
String.Format("{0,-10}Cost: {1,6:C} On hand: {2}",
name, cost, onhand);
}
// Implement the IComparable interface.
public int CompareTo(object obj) {
Product b;
b = (Product) obj;
return name.rupareTo(b.name);
}
}
class MainClass {
public static void Main() {
ArrayList inv = new ArrayList();
// Add elements to the list
inv.Add(new Product("A", 5.5, 3));
inv.Add(new Product("B", 8.9, 2));
inv.Add(new Product("C", 3.0, 4));
inv.Add(new Product("D", 1.8, 8));
Console.WriteLine("Product list before sorting:");
foreach(Product i in inv) {
Console.WriteLine(" " + i);
}
Console.WriteLine();
// Sort the list.
inv.Sort();
Console.WriteLine("Product list after sorting:");
foreach(Product i in inv) {
Console.WriteLine(" " + i);
}
}
}
Product list before sorting: A Cost: $5.50 On hand: 3 B Cost: $8.90 On hand: 2 C Cost: $3.00 On hand: 4 D Cost: $1.80 On hand: 8 Product list after sorting: A Cost: $5.50 On hand: 3 B Cost: $8.90 On hand: 2 C Cost: $3.00 On hand: 4 D Cost: $1.80 On hand: 8
Add reference objects to ArrayList
using System;
using System.Collections;
using System.Collections.Specialized;
class MyClass{
public string MyName="";
}
class MainClass
{
static void Main(string[] args)
{
ArrayList classList = new ArrayList();
classList.AddRange(new MyClass[] { new MyClass(),
new MyClass(),
new MyClass()});
Console.WriteLine("Items in List: {0}", classList.Count);
// Print out current values.
foreach(MyClass c in classList)
{
Console.WriteLine("MyClass name: {0}", c.MyName);
}
}
}
Items in List: 3 MyClass name: MyClass name: MyClass name:
Add user-defined object to an ArrayList
using System;
using System.Collections;
class Product {
string name;
double cost;
int onhand;
public Product(string n, double c, int h) {
name = n;
cost = c;
onhand = h;
}
public override string ToString() {
return
String.Format("{0,-10}Cost: {1,6:C} On hand: {2}",
name, cost, onhand);
}
}
class MainClass {
public static void Main() {
ArrayList inv = new ArrayList();
// Add elements to the list
inv.Add(new Product("A", 5.9, 3));
inv.Add(new Product("B", 8.2, 2));
inv.Add(new Product("C", 3.5, 4));
inv.Add(new Product("D", 1.8, 8));
Console.WriteLine("Product list:");
foreach(Product i in inv) {
Console.WriteLine(" " + i);
}
}
}
Product list: A Cost: $5.90 On hand: 3 B Cost: $8.20 On hand: 2 C Cost: $3.50 On hand: 4 D Cost: $1.80 On hand: 8
ArrayList and your own object: Add objects to ArrayList
using System;
using System.Collections;
class Employee : IComparable
{
public string Name;
public int Number;
public Employee(string Name, int Number)
{
this.Name = Name;
this.Number = Number;
}
public override string ToString()
{
return "Name is " + Name + ", Number is " + Number;
}
public int Compare(object lhs, object rhs)
{
Employee lhsEmployee = (Employee) lhs;
Employee rhsEmployee = (Employee) rhs;
if (lhsEmployee.Number < rhsEmployee.Number) {
return -1;
} else if (lhsEmployee.Number > rhsEmployee.Number) {
return 1;
} else {
return 0;
}
}
public int CompareTo(object rhs) {
return Compare(this, rhs);
}
}
class MainClass
{
public static void DisplayArrayList(string arrayListName, ArrayList myArrayList) {
for (int i = 0; i < myArrayList.Count; i++) {
Console.WriteLine(arrayListName + "[" + i + "] = " + myArrayList[i]);
}
}
public static void Main()
{
ArrayList myArrayList = new ArrayList();
// add four Employee objects to myArrayList using the Add() method
Console.WriteLine("Adding four Employee objects to myArrayList");
Employee myM = new Employee("M", 2001);
Employee myB = new Employee("B", 2001);
Employee myC = new Employee("C", 1999);
Employee myT = new Employee("T", 1979);
myArrayList.Add(myM);
myArrayList.Add(myB);
myArrayList.Add(myC);
myArrayList.Add(myT);
DisplayArrayList("myArrayList", myArrayList);
}
}
Adding four Employee objects to myArrayList myArrayList[0] = Name is M, Number is 2001 myArrayList[1] = Name is B, Number is 2001 myArrayList[2] = Name is C, Number is 1999 myArrayList[3] = Name is T, Number is 1979
ArrayList and your own object: Get an enumerator using the GetEnumerator() method and use it to read the object elements in ArrayList
using System;
using System.Collections;
class Employee : IComparable
{
public string Name;
public int Number;
public Employee(string Name, int Number)
{
this.Name = Name;
this.Number = Number;
}
public override string ToString()
{
return "Name is " + Name + ", Number is " + Number;
}
public int Compare(object lhs, object rhs)
{
Employee lhsEmployee = (Employee) lhs;
Employee rhsEmployee = (Employee) rhs;
if (lhsEmployee.Number < rhsEmployee.Number) {
return -1;
} else if (lhsEmployee.Number > rhsEmployee.Number) {
return 1;
} else {
return 0;
}
}
public int CompareTo(object rhs) {
return Compare(this, rhs);
}
}
class MainClass
{
public static void DisplayArrayList(string arrayListName, ArrayList myArrayList) {
for (int i = 0; i < myArrayList.Count; i++) {
Console.WriteLine(arrayListName + "[" + i + "] = " + myArrayList[i]);
}
}
public static void Main()
{
ArrayList myArrayList = new ArrayList();
// add four Employee objects to myArrayList using the Add() method
Console.WriteLine("Adding four Employee objects to myArrayList");
Employee myM = new Employee("M", 2001);
Employee myB = new Employee("B", 2001);
Employee myC = new Employee("C", 1999);
Employee myT = new Employee("T", 1979);
myArrayList.Add(myM);
myArrayList.Add(myB);
myArrayList.Add(myC);
myArrayList.Add(myT);
DisplayArrayList("myArrayList", myArrayList);
IEnumerator myEnumerator = myArrayList.GetEnumerator();
while (myEnumerator.MoveNext())
{
Console.WriteLine("myEnumerator.Current = " + myEnumerator.Current);
}
}
}
Adding four Employee objects to myArrayList myArrayList[0] = Name is M, Number is 2001 myArrayList[1] = Name is B, Number is 2001 myArrayList[2] = Name is C, Number is 1999 myArrayList[3] = Name is T, Number is 1979 myEnumerator.Current = Name is M, Number is 2001 myEnumerator.Current = Name is B, Number is 2001 myEnumerator.Current = Name is C, Number is 1999 myEnumerator.Current = Name is T, Number is 1979
ArrayList and your own object: remove an object from ArrayList
using System;
using System.Collections;
class Employee : IComparable
{
public string Name;
public int Number;
public Employee(string Name, int Number)
{
this.Name = Name;
this.Number = Number;
}
public override string ToString()
{
return "Name is " + Name + ", Number is " + Number;
}
public int Compare(object lhs, object rhs)
{
Employee lhsEmployee = (Employee) lhs;
Employee rhsEmployee = (Employee) rhs;
if (lhsEmployee.Number < rhsEmployee.Number) {
return -1;
} else if (lhsEmployee.Number > rhsEmployee.Number) {
return 1;
} else {
return 0;
}
}
public int CompareTo(object rhs) {
return Compare(this, rhs);
}
}
class MainClass
{
public static void DisplayArrayList(string arrayListName, ArrayList myArrayList) {
for (int i = 0; i < myArrayList.Count; i++) {
Console.WriteLine(arrayListName + "[" + i + "] = " + myArrayList[i]);
}
}
public static void Main()
{
ArrayList myArrayList = new ArrayList();
// add four Employee objects to myArrayList using the Add() method
Console.WriteLine("Adding four Employee objects to myArrayList");
Employee myM = new Employee("M", 2001);
Employee myB = new Employee("B", 2001);
Employee myC = new Employee("C", 1999);
Employee myT = new Employee("T", 1979);
myArrayList.Add(myM);
myArrayList.Add(myB);
myArrayList.Add(myC);
myArrayList.Add(myT);
DisplayArrayList("myArrayList", myArrayList);
myArrayList.Remove(myB);
DisplayArrayList("myArrayList", myArrayList);
}
}
Adding four Employee objects to myArrayList myArrayList[0] = Name is M, Number is 2001 myArrayList[1] = Name is B, Number is 2001 myArrayList[2] = Name is C, Number is 1999 myArrayList[3] = Name is T, Number is 1979 myArrayList[0] = Name is M, Number is 2001 myArrayList[1] = Name is C, Number is 1999 myArrayList[2] = Name is T, Number is 1979
ArrayList and your own object: Use the BinarySearch() method to search myArrayList for an object
using System;
using System.Collections;
class Employee : IComparable
{
public string Name;
public int Number;
public Employee(string Name, int Number)
{
this.Name = Name;
this.Number = Number;
}
public override string ToString()
{
return "Name is " + Name + ", Number is " + Number;
}
public int Compare(object lhs, object rhs)
{
Employee lhsEmployee = (Employee) lhs;
Employee rhsEmployee = (Employee) rhs;
if (lhsEmployee.Number < rhsEmployee.Number) {
return -1;
} else if (lhsEmployee.Number > rhsEmployee.Number) {
return 1;
} else {
return 0;
}
}
public int CompareTo(object rhs) {
return Compare(this, rhs);
}
}
class MainClass
{
public static void DisplayArrayList(string arrayListName, ArrayList myArrayList) {
for (int i = 0; i < myArrayList.Count; i++) {
Console.WriteLine(arrayListName + "[" + i + "] = " + myArrayList[i]);
}
}
public static void Main()
{
ArrayList myArrayList = new ArrayList();
// add four Employee objects to myArrayList using the Add() method
Console.WriteLine("Adding four Employee objects to myArrayList");
Employee myM = new Employee("M", 2001);
Employee myB = new Employee("B", 2001);
Employee myC = new Employee("C", 1999);
Employee myT = new Employee("T", 1979);
myArrayList.Add(myM);
myArrayList.Add(myB);
myArrayList.Add(myC);
myArrayList.Add(myT);
DisplayArrayList("myArrayList", myArrayList);
myArrayList.Sort();
DisplayArrayList("myArrayList", myArrayList);
int index2 = myArrayList.BinarySearch(myC);
Console.WriteLine("Found myC at index " + index2);
}
}
Adding four Employee objects to myArrayList myArrayList[0] = Name is M, Number is 2001 myArrayList[1] = Name is B, Number is 2001 myArrayList[2] = Name is C, Number is 1999 myArrayList[3] = Name is T, Number is 1979 myArrayList[0] = Name is T, Number is 1979 myArrayList[1] = Name is C, Number is 1999 myArrayList[2] = Name is M, Number is 2001 myArrayList[3] = Name is B, Number is 2001 Found myC at index 1
ArrayList and your own object: Use the Contains() method to determine if an object is in the ArrayList
using System;
using System.Collections;
class Employee : IComparable
{
public string Name;
public int Number;
public Employee(string Name, int Number)
{
this.Name = Name;
this.Number = Number;
}
public override string ToString()
{
return "Name is " + Name + ", Number is " + Number;
}
public int Compare(object lhs, object rhs)
{
Employee lhsEmployee = (Employee) lhs;
Employee rhsEmployee = (Employee) rhs;
if (lhsEmployee.Number < rhsEmployee.Number) {
return -1;
} else if (lhsEmployee.Number > rhsEmployee.Number) {
return 1;
} else {
return 0;
}
}
public int CompareTo(object rhs) {
return Compare(this, rhs);
}
}
class MainClass
{
public static void DisplayArrayList(string arrayListName, ArrayList myArrayList) {
for (int i = 0; i < myArrayList.Count; i++) {
Console.WriteLine(arrayListName + "[" + i + "] = " + myArrayList[i]);
}
}
public static void Main()
{
ArrayList myArrayList = new ArrayList();
// add four Employee objects to myArrayList using the Add() method
Console.WriteLine("Adding four Employee objects to myArrayList");
Employee myM = new Employee("M", 2001);
Employee myB = new Employee("B", 2001);
Employee myC = new Employee("C", 1999);
Employee myT = new Employee("T", 1979);
myArrayList.Add(myM);
myArrayList.Add(myB);
myArrayList.Add(myC);
myArrayList.Add(myT);
DisplayArrayList("myArrayList", myArrayList);
if (myArrayList.Contains(myB))
{
Console.WriteLine("myArrayList does contain myB");
int index = myArrayList.IndexOf(myB);
Console.WriteLine("myB occurs at index " + index);
}
}
}
Adding four Employee objects to myArrayList myArrayList[0] = Name is M, Number is 2001 myArrayList[1] = Name is B, Number is 2001 myArrayList[2] = Name is C, Number is 1999 myArrayList[3] = Name is T, Number is 1979 myArrayList does contain myB myB occurs at index 1
ArrayList and your own object: Use the GetRange() method to get a range of object elements from ArrayList
using System;
using System.Collections;
class Employee : IComparable
{
public string Name;
public int Number;
public Employee(string Name, int Number)
{
this.Name = Name;
this.Number = Number;
}
public override string ToString()
{
return "Name is " + Name + ", Number is " + Number;
}
public int Compare(object lhs, object rhs)
{
Employee lhsEmployee = (Employee) lhs;
Employee rhsEmployee = (Employee) rhs;
if (lhsEmployee.Number < rhsEmployee.Number) {
return -1;
} else if (lhsEmployee.Number > rhsEmployee.Number) {
return 1;
} else {
return 0;
}
}
public int CompareTo(object rhs) {
return Compare(this, rhs);
}
}
class MainClass
{
public static void DisplayArrayList(string arrayListName, ArrayList myArrayList) {
for (int i = 0; i < myArrayList.Count; i++) {
Console.WriteLine(arrayListName + "[" + i + "] = " + myArrayList[i]);
}
}
public static void Main()
{
ArrayList myArrayList = new ArrayList();
// add four Employee objects to myArrayList using the Add() method
Console.WriteLine("Adding four Employee objects to myArrayList");
Employee myM = new Employee("M", 2001);
Employee myB = new Employee("B", 2001);
Employee myC = new Employee("C", 1999);
Employee myT = new Employee("T", 1979);
myArrayList.Add(myM);
myArrayList.Add(myB);
myArrayList.Add(myC);
myArrayList.Add(myT);
DisplayArrayList("myArrayList", myArrayList);
ArrayList anotherArrayList = myArrayList.GetRange(1, 2);
DisplayArrayList("anotherArrayList", anotherArrayList);
}
}
Adding four Employee objects to myArrayList myArrayList[0] = Name is M, Number is 2001 myArrayList[1] = Name is B, Number is 2001 myArrayList[2] = Name is C, Number is 1999 myArrayList[3] = Name is T, Number is 1979 anotherArrayList[0] = Name is B, Number is 2001 anotherArrayList[1] = Name is C, Number is 1999
ArrayList and your own object: use the IndexOf() method to display the index of an object
using System;
using System.Collections;
class Employee : IComparable
{
public string Name;
public int Number;
public Employee(string Name, int Number)
{
this.Name = Name;
this.Number = Number;
}
public override string ToString()
{
return "Name is " + Name + ", Number is " + Number;
}
public int Compare(object lhs, object rhs)
{
Employee lhsEmployee = (Employee) lhs;
Employee rhsEmployee = (Employee) rhs;
if (lhsEmployee.Number < rhsEmployee.Number) {
return -1;
} else if (lhsEmployee.Number > rhsEmployee.Number) {
return 1;
} else {
return 0;
}
}
public int CompareTo(object rhs) {
return Compare(this, rhs);
}
}
class MainClass
{
public static void DisplayArrayList(string arrayListName, ArrayList myArrayList) {
for (int i = 0; i < myArrayList.Count; i++) {
Console.WriteLine(arrayListName + "[" + i + "] = " + myArrayList[i]);
}
}
public static void Main()
{
ArrayList myArrayList = new ArrayList();
// add four Employee objects to myArrayList using the Add() method
Console.WriteLine("Adding four Employee objects to myArrayList");
Employee myM = new Employee("M", 2001);
Employee myB = new Employee("B", 2001);
Employee myC = new Employee("C", 1999);
Employee myT = new Employee("T", 1979);
myArrayList.Add(myM);
myArrayList.Add(myB);
myArrayList.Add(myC);
myArrayList.Add(myT);
DisplayArrayList("myArrayList", myArrayList);
if (myArrayList.Contains(myB))
{
Console.WriteLine("myArrayList does contain myB");
int index = myArrayList.IndexOf(myB);
Console.WriteLine("myB occurs at index " + index);
}
}
}
Adding four Employee objects to myArrayList myArrayList[0] = Name is M, Number is 2001 myArrayList[1] = Name is B, Number is 2001 myArrayList[2] = Name is C, Number is 1999 myArrayList[3] = Name is T, Number is 1979 myArrayList does contain myB myB occurs at index 1
ArrayList and your own object: Use the Sort() method to sort objects in the ArrayList
using System;
using System.Collections;
class Employee : IComparable
{
public string Name;
public int Number;
public Employee(string Name, int Number)
{
this.Name = Name;
this.Number = Number;
}
public override string ToString()
{
return "Name is " + Name + ", Number is " + Number;
}
public int Compare(object lhs, object rhs)
{
Employee lhsEmployee = (Employee) lhs;
Employee rhsEmployee = (Employee) rhs;
if (lhsEmployee.Number < rhsEmployee.Number) {
return -1;
} else if (lhsEmployee.Number > rhsEmployee.Number) {
return 1;
} else {
return 0;
}
}
public int CompareTo(object rhs) {
return Compare(this, rhs);
}
}
class MainClass
{
public static void DisplayArrayList(string arrayListName, ArrayList myArrayList) {
for (int i = 0; i < myArrayList.Count; i++) {
Console.WriteLine(arrayListName + "[" + i + "] = " + myArrayList[i]);
}
}
public static void Main()
{
ArrayList myArrayList = new ArrayList();
// add four Employee objects to myArrayList using the Add() method
Console.WriteLine("Adding four Employee objects to myArrayList");
Employee myM = new Employee("M", 2001);
Employee myB = new Employee("B", 2001);
Employee myC = new Employee("C", 1999);
Employee myT = new Employee("T", 1979);
myArrayList.Add(myM);
myArrayList.Add(myB);
myArrayList.Add(myC);
myArrayList.Add(myT);
DisplayArrayList("myArrayList", myArrayList);
myArrayList.Sort();
DisplayArrayList("myArrayList", myArrayList);
}
}
Adding four Employee objects to myArrayList myArrayList[0] = Name is M, Number is 2001 myArrayList[1] = Name is B, Number is 2001 myArrayList[2] = Name is C, Number is 1999 myArrayList[3] = Name is T, Number is 1979 myArrayList[0] = Name is T, Number is 1979 myArrayList[1] = Name is C, Number is 1999 myArrayList[2] = Name is M, Number is 2001 myArrayList[3] = Name is B, Number is 2001