zoukankan      html  css  js  c++  java
  • list中的Find方法使用

    对于用list<Type>这种泛型容器使用Find方法中需要传递一个参数是这样形式的Predicate<T>,T就是list存储的类型,而这里Predicate<T>是一个委托,构造是这样的public delegate bool Prdicate<T>(T obj)。   

    因此使用的时候有两种方法,一种是在外面实现这个委托相应的函数,微软的官方例子
    using System;
    using System.Collections.Generic;

    public class Example
    {
        public static void Main()
        {
            List<string> dinosaurs = new List<string>();

            dinosaurs.Add("Compsognathus");
            dinosaurs.Add("Amargasaurus");
            dinosaurs.Add("Oviraptor");
            dinosaurs.Add("Velociraptor");
            dinosaurs.Add("Deinonychus");
            dinosaurs.Add("Dilophosaurus");
            dinosaurs.Add("Gallimimus");
            dinosaurs.Add("Triceratops");

            Console.WriteLine();
            foreach(string dinosaur in dinosaurs)
            {
                Console.WriteLine(dinosaur);
            }

            Console.WriteLine("\nTrueForAll(EndsWithSaurus): {0}",
                dinosaurs.TrueForAll(EndsWithSaurus));

            Console.WriteLine("\nFind(EndsWithSaurus): {0}",
                dinosaurs.Find(EndsWithSaurus));

            Console.WriteLine("\nFindLast(EndsWithSaurus): {0}",
                dinosaurs.FindLast(EndsWithSaurus));

            Console.WriteLine("\nFindAll(EndsWithSaurus):");
            List<string> sublist = dinosaurs.FindAll(EndsWithSaurus);

            foreach(string dinosaur in sublist)
            {
                Console.WriteLine(dinosaur);
            }

            Console.WriteLine(
                "\n{0} elements removed by RemoveAll(EndsWithSaurus).",
                dinosaurs.RemoveAll(EndsWithSaurus));

            Console.WriteLine("\nList now contains:");
            foreach(string dinosaur in dinosaurs)
            {
                Console.WriteLine(dinosaur);
            }

            Console.WriteLine("\nExists(EndsWithSaurus): {0}",
                dinosaurs.Exists(EndsWithSaurus));
        }

        // Search predicate returns true if a string ends in "saurus".
        private static bool EndsWithSaurus(String s)
        {
            if ((s.Length > 5) &&
                (s.Substring(s.Length - 6).ToLower() == "saurus"))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }

    /* This code example produces the following output:

    Compsognathus
    Amargasaurus
    Oviraptor
    Velociraptor
    Deinonychus
    Dilophosaurus
    Gallimimus
    Triceratops

    TrueForAll(EndsWithSaurus): False

    Find(EndsWithSaurus): Amargasaurus

    FindLast(EndsWithSaurus): Dilophosaurus

    FindAll(EndsWithSaurus):
    Amargasaurus
    Dilophosaurus

    2 elements removed by RemoveAll(EndsWithSaurus).

    List now contains:
    Compsognathus
    Oviraptor
    Velociraptor
    Deinonychus
    Gallimimus
    Triceratops

    Exists(EndsWithSaurus): False
    */
  • 相关阅读:
    SP375 QTREE
    「2017 山东一轮集训 Day5」字符串 (后缀自动机, 拓扑排序)
    [SDOI2016]生成魔咒(后缀自动机)
    bzoj3252: 攻略(贪心)
    bzoj2961 共点圆 (CDQ分治, 凸包)
    [CTSC2012]熟悉的文章 (后缀自动机 单调队列)
    bzoj3622: 已经没有什么好害怕的了
    [SDOI2013]泉(容斥)
    [SHOI2012]信用卡凸包(计算几何)
    CF1139D Steps to One (莫比乌斯反演 期望dp)
  • 原文地址:https://www.cnblogs.com/yukun/p/533094.html
Copyright © 2011-2022 走看看