Método List.FindIndex() en C# con ejemplos

El método List<T>.FindIndex se usa para buscar un elemento que coincida con las condiciones definidas por un predicado especificado y devuelve el índice de la primera aparición dentro de List<T>. Si no se encuentra un elemento que coincida con las condiciones, este método devolverá -1. Hay 3 métodos en la lista de sobrecarga de este método de la siguiente manera:

  1. Método FindIndex(Predicado<T>)
  2. Método FindIndex(Int32,Predicate<T>)
  3. Método FindIndex(Int32, Int32, Predicate<T>)

Método FindIndex(Predicado<T>)

Este método se usa para buscar un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la primera aparición dentro de List<T> completo.

Sintaxis: public int FindIndex (coincidencia Predicate<T>); Parámetro: match: Es el delegado Predicate<T> que define las condiciones del elemento a buscar.

Valor devuelto: Devuelve el índice de la primera aparición de un elemento que coincida con las condiciones definidas por match , si se encuentra. Si no se encuentra devuelve -1. Excepción: este método dará ArgumentNullException si la coincidencia es nula. Ejemplo: 

csharp

// C# program to demonstrate the use of
// List<T>.FindIndex (Predicate <T>) method
using System;
using System.Collections.Generic;
 
class GFG1 : IComparable {
 
    public String gg
    {
        get;
        set;
    }
 
    public int CompareTo(Object o)
    {
        GFG1 e = o as GFG1;
        if (e == null)
            throw new ArgumentException("Not valid object");
 
        return gg.CompareTo(e.gg);
    }
}
 
class GFG2 {
 
    String s;
 
    public GFG2(String ss)
    {
        s = ss;
    }
 
    public bool StartsWith(GFG1 e)
    {
        return e.gg.StartsWith(s, StringComparison.InvariantCultureIgnoreCase);
    }
}
 
// Driver Class
class GFG3 {
 
    // Main Method
    public static void Main()
    {
        var e = new List<GFG1>();
 
        // List elements
        e.AddRange(new GFG1[] {
            new GFG1{
                gg = "c",
            },
 
            new GFG1{
                gg = "c++",
            },
            new GFG1{
                gg = "java",
            },
            new GFG1{
                gg = "C#",
            },
            new GFG1{
                gg = "Python",
            },
            new GFG1{
                gg = "Perl",
            },
        });
 
        e.Sort();
        // sorts the list
 
        var es = new GFG2("C");
        Console.WriteLine("'C' starts at index "
                  + e.FindIndex(es.StartsWith));
 
        es = new GFG2("P");
        Console.WriteLine("'P' starts at index " +
                      e.FindIndex(es.StartsWith));
    }
}
Producción:

'C' starts at index 0
'P' starts at index 4

Método FindIndex(Int32, Predicado<T>)

Este método busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve el índice de la primera aparición dentro del rango de elementos de la Lista que se extiende desde el índice especificado hasta el último elemento.

Sintaxis: public int FindIndex (int startIndex, Predicate<T> match); Parámetro: startIndex: Es el índice de inicio de la búsqueda en base cero. match: Es el delegado Predicate<T> que define las condiciones del elemento a buscar.

Valor devuelto: este método devolverá el índice de la primera aparición de un elemento que coincida con las condiciones definidas por «coincidencia» , si se encuentra. Si no se encuentra devuelve -1. Excepciones:

  • ArgumentNullException: si la coincidencia es nula.
  • ArgumentOutOfRangeException: si startIndex está fuera del rango de índices válidos para List<T>.

Ejemplo: 

csharp

// C# program to demonstrate the use of
// List<T>.FindIndex (Int32, Predicate <T>) method
using System;
using System.Collections.Generic;
 
class GFG1 : IComparable {
 
    public String gg
    {
        get;
        set;
    }
 
    public int CompareTo(Object o)
    {
        GFG1 e = o as GFG1;
 
        return gg.CompareTo(e.gg);
    }
}
 
class GFG2 {
 
    String s;
 
    public GFG2(String ss)
    {
        s = ss;
    }
 
    public bool StartsWith(GFG1 e)
    {
        return e.gg.StartsWith(s, StringComparison.InvariantCultureIgnoreCase);
    }
}
 
// Driver Class
class GFG3 {
 
    // Main Method
    public static void Main()
    {
        var e = new List<GFG1>();
 
        // List elements
        e.AddRange(new GFG1[] {
            new GFG1{
                gg = "c",
            },
            new GFG1{
                gg = "Python",
            },
            new GFG1{
                gg = "Java",
            },
            new GFG1{
                gg = "C#",
            },
            new GFG1{
                gg = "Java",
            },
            new GFG1{
                gg = "Perl",
            },
        });
 
        // sorts the list
        e.Sort();
        
        var es = new GFG2("C");
 
         // Search for c start from index 1
        Console.WriteLine("Search for 'C' starts at index "
                          + e.FindIndex(1, es.StartsWith));
        
        es = new GFG2("J");
 
        // search for j starts from index 2
        Console.WriteLine("Search for 'J' starts at index "
                          + e.FindIndex(2, es.StartsWith));
         
    }
}
Producción:

Search for 'C' starts at index 1
Search for 'J' starts at index 2

Método FindIndex(Int32, Int32, Predicate<T>)

Este método busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la primera aparición dentro del rango de elementos en la Lista que comienza en el índice especificado y contiene el número especificado de elementos.

Sintaxis: public int FindIndex (int startIndex, int count, Predicate<T> match); Parámetros: startIndex: Es el índice de inicio de la búsqueda en base cero. count: Es el número de elementos de la sección a buscar. match: Es el delegado Predicate<T> que define las condiciones del elemento a buscar.

Valor devuelto: este método devolverá el índice de la primera aparición de un elemento que coincida con las condiciones definidas por «coincidencia» , si se encuentra. Si no se encuentra devuelve -1. Excepciones:

  • ArgumentNullException: si la coincidencia es nula.
  • ArgumentOutOfRangeException: si startIndex está fuera del rango de índices válidos para List<T> o count es menor que 0 o startIndex y count no especifique una sección válida en List<T>.

Ejemplo: 

csharp

// C# program to demonstrate the use of
// List<T>.FindIndex (Int32, Int32,
// Predicate <T>) method
using System;
using System.Collections.Generic;
 
class GFG1 : IComparable {
 
    public String gg
    {
        get;
        set;
    }
 
    public int CompareTo(Object o)
    {
        GFG1 e = o as GFG1;
 
        return gg.CompareTo(e.gg);
    }
}
 
class GFG2 {
 
    String s;
 
    public GFG2(String ss)
    {
        s = ss;
    }
 
    public bool StartsWith(GFG1 e)
    {
        return e.gg.StartsWith(s, StringComparison.InvariantCultureIgnoreCase);
    }
}
 
// Driver Class
class GFG3 {
 
    // Main Method
    public static void Main()
    {
        var e = new List<GFG1>();
 
        // List elements
        e.AddRange(new GFG1[] {
 
            new GFG1{
                gg = "c",
            },
            new GFG1{
                gg = "Python",
            },
            new GFG1{
                gg = "C++",
            },
            new GFG1{
                gg = "Java",
            },
            new GFG1{
                gg = "C#",
            },
            new GFG1{
                gg = "Perl",
            },
        });
 
        // sorts the list
        e.Sort();
         
        var es = new GFG2("C");
 
        // search for c start from index 1
        // count is 2 here
        Console.WriteLine("Search for 'C' starts at index "
                       + e.FindIndex(0, 2, es.StartsWith));
         
        es = new GFG2("J");
 
        // search for j starts from index 2
        // count is 4 here
        Console.WriteLine("Search for 'J' starts at index "
                       + e.FindIndex(2, 4, es.StartsWith));
        
    }
}
Producción:

Search for 'C' starts at index 0
Search for 'J' starts at index 3

Referencia:

Publicación traducida automáticamente

Artículo escrito por SoumikMondal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *