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