List泛型集合总结(二)

来源:互联网 发布:mysql查询一周内数据 编辑:程序博客网 时间:2024/05/19 18:15

    紧接上文,下面介绍List的搜索.

泛型集合的搜索

搜索就是从集合中找出满足特定条件的项,可以定义多个搜索条件,并根据需要进行调用。首先,定义搜索条件,如下所示:

class PersonPredicate

{

    //找出中年人(40岁以上)

    public static bool MidAge(Person p)

    {

        if (p.Age >= 40)

            return true;

        else

            return false;

    }

}

上面的搜索条件放在一个静态方法中,方法的返回类型为布尔型,集合中满足特定条件的项返回true,否则返回false。

System.Predicate<Person> MidAgePredicate = new System.Predicate<Person>(PersonPredicate.MidAge);

List<Person> MidAgePersons = persons.FindAll(MidAgePredicate);

//输出所有的中年人姓名

foreach (Person p in MidAgePersons)

{

    Console.WriteLine(p.Name); //输出"王五"

}

然后通过内置的泛型委托System.Predicate<T>对集合进行搜索:

 

泛型集合的扩展

如果要得到集合中所有人的姓名,中间以逗号隔开,那该怎么处理?

考虑到单个类可以提供的功能是有限的,很自然会想到对List<T>类进行扩展,泛型类也是类,因此可以通过继承来进行扩展。请看下面的代码:

//定义Persons集合类

class Persons : List<Person>

{

    //取得集合中所有人姓名

    public string GetAllNames()

    {

        if (this.Count == 0)

            return "";

        string val = "";

        foreach (Person p in this)

        {

            val += p.Name + ",";

        }

        return val.Substring(0, val.Length - 1);

    }

}

//创建并填充Persons集合

Persons PersonCol = new Persons();

PersonCol.Add(p1);

PersonCol.Add(p2);

PersonCol.Add(p3);

//输出所有人姓名

Console.Write(PersonCol.GetAllNames()); //输出“张三,李四,王五”

List的方法和属性 方法或属性 作用

Capacity 用于获取或设置List可容纳元素的数量。当数量超过容量时,这个值会自动增长。您可以设置这个值以减少容量,也可以调用trin()方法来减少容量以适合实际的元素数目。

Count 属性,用于获取数组中当前元素数量

Item( ) 通过指定索引获取或设置元素。对于List类来说,它是一个索引器。

Add( ) 在List中添加一个对象的公有方法

AddRange( ) 公有方法,在List尾部添加实现了ICollection接口的多个元素

BinarySearch( ) 重载的公有方法,用于在排序的List内使用二分查找来定位指定元素.

Clear( ) 在List内移除所有元素

Contains( ) 测试一个元素是否在List内

CopyTo( ) 重载的公有方法,把一个List拷贝到一维数组内

Exists( ) 测试一个元素是否在List内

Find( ) 查找并返回List内的出现的第一个匹配元素

FindAll( ) 查找并返回List内的所有匹配元素

GetEnumerator( ) 重载的公有方法,返回一个用于迭代List的枚举器

GetRange( ) 拷贝指定范围的元素到新的List内

IndexOf( ) 重载的公有方法,查找并返回每一个匹配元素的索引

Insert( ) 在List内插入一个元素

InsertRange( ) 在List内插入一组元素

LastIndexOf( ) 重载的公有方法,,查找并返回最后一个匹配元素的索引

Remove( ) 移除与指定元素匹配的第一个元素

RemoveAt( ) 移除指定索引的元素

RemoveRange( ) 移除指定范围的元素

Reverse( ) 反转List内元素的顺序

Sort( ) 对List内的元素进行排序

ToArray( ) 把List内的元素拷贝到一个新的数组内

trimToSize( ) 将容量设置为List中元素的实际数目

小结:

本文着重于介绍运用C# 2.0中的泛型来实现集合,以及对集合功能进行扩展,恰当的运用泛型集合,可以减少很多重复工作,极大的提高开发效率。实际上,集合只不过是泛型的一个典型应用,如果想了解更多关于泛型的知识,可以查阅其他相关资料。

 

原创粉丝点击