C葃泛型のList操作例
8027 ワード
:http://blog.itpub.net/12639172/viewspace-478294/
private void button1_Click(object sender, EventArgs e)
{
label1.Text = "";
/*
ArrayList AL = new ArrayList(3);
TestData temp = new TestData(1);
AL.Add(temp);
AL.Add(new TestData(2));
AL.Add(new TestData(3));
foreach (TestData item in AL)
{
label1.Text += item.Val.ToString() + " ";
item.Val += 1;
}
foreach (TestData item in AL)
{
label1.Text += item.Val.ToString() + " ";
}
*/
List racers;
List racers2;
FindRacer finder;
//--------------------------------------------------------------------------------
//
racers = new List();
racers.Add(new Racer("M J", "L"));
racers.Add(new Racer("AD3 R", "OK3"));
racers.Add(new Racer("M2 O", "L2"));
racers.Add(new Racer("AD2 Q", "OK2"));
racers.Add(new Racer("M1 W", "L"));
racers.Add(new Racer("AD4 A", "OK4"));
racers.Add(new Racer("AD1 L", "OK1"));
//
label1.Text += "
";
foreach (Racer item in racers)
{
label1.Text += item.ToString() + " ";
}
//--------------------------------------------------------------------------------
/*
List :Preadcate , .
public T Find match);
public List FindAll match);
*/
//
label1.Text += "
FindAll(Car==\"L\")
";
finder = new FindRacer("L");
foreach(Racer item in racers.FindAll(new Predicate(finder.DrivingCarPredicate)))
{
label1.Text += item.ToString() + " ";
}
label1.Text += "
FindAll(Car==\"L\")
";
racers2 = racers.FindAll(new Predicate(finder.DrivingCarPredicate));//
foreach (Racer item in racers2)
{
label1.Text += item.ToString() + " ";
}
// ( )
label1.Text += "
Find(Car==\"L\")
";
finder = new FindRacer("L2");
label1.Text += racers.Find(new Predicate(finder.DrivingCarPredicate)).ToString();
//
racers.Find(new Predicate(finder.DrivingCarPredicate)).Car = "L";
label1.Text += "
";
finder = new FindRacer("L");
foreach (Racer item in racers.FindAll(new Predicate(finder.DrivingCarPredicate)))
{
label1.Text += item.ToString() + " ";
}
//--------------------------------------------------------------------------------
/*
List.ForEach() .
Action .Action void.
*/
racers.ForEach(delegate(Racer r) { r.Car += "_CAR"; });
label1.Text += "
List.ForEach()
";
foreach (Racer item in racers)
{
label1.Text += item.ToString() + " ";
}
//--------------------------------------------------------------------------------
/*
List.Sort
*/
//public void List.Sort(Comparison), , T ;
racers.Sort(delegate(Racer r1, Racer r2) { return r1.Car.CompareTo(r2.Car); });
label1.Text += "
public void List.Sort(Comparison)
";
foreach (Racer item in racers)
{
label1.Text += item.ToString() + " ";
}
//public void List.Sort(IComparer)
racers.Sort(new RacerComparer(RacerComparer.CompareType.Name));
label1.Text += "
public void List.Sort(IComparer)
";
foreach (Racer item in racers)
{
label1.Text += item.ToString() + " ";
}
//--------------------------------------------------------------------------------
/*
*/
List persons = racers.ConvertAll(delegate(Racer r)
{
int ixSeparator = r.Name.LastIndexOf(' ') + 1;
string lastname = r.Name.Substring(ixSeparator, r.Name.Length - ixSeparator);
string firstname = r.Name.Substring(0, ixSeparator - 1);
return(new Person(firstname, lastname));
});
label1.Text += "
List.ConvertAll
";
foreach (Person item in persons)
{
label1.Text += item.ToString() + " ";
}
label1.Text += "
";
foreach (Racer item in racers)
{
label1.Text += item.ToString() + " ";
}
//--------------------------------------------------------------------------------
}
//--------------------------------------------------------------------------------
//
class Racer
{
private string name;
public string Name
{
get
{
return (name);
}
}
private string car;
public string Car
{
get
{
return (car);
}
set
{
car = value;
}
}
public Racer(string name, string car)
{
this.name = name;
this.car = car;
}
public override string ToString()
{
return name + "," + car;
}
}
//--------------------------------------------------------------------------------
//
class FindRacer
{
private string car;
public FindRacer(string car)
{
this.car = car;
}
public bool DrivingCarPredicate(Racer racer)
{
return (racer.Car == car);
}
}
//
class RacerComparer : IComparer
{
public enum CompareType
{
Name, Car
}
private CompareType compareType;
public RacerComparer(CompareType compareType)
{
this.compareType = compareType;
}
public int Compare(Racer x, Racer y)
{
int result = 0;
switch (compareType)
{
case CompareType.Name:
{
result = x.Name.CompareTo(y.Name);
break;
}
case CompareType.Car:
{
result = x.Car.CompareTo(x.Car);
break;
}
}
return (result);
}
}
//--------------------------------------------------------------------------------
//
public class Person
{
private string firstname;
private string lastname;
public Person(string firstname, string lastname)
{
this.firstname = firstname;
this.lastname = lastname;
}
public override string ToString()
{
return (firstname + "." + lastname);
}
}