C# | Cómo obtener la última aparición del elemento en la Lista que coincida con las condiciones especificadas

El método List<T>.FindLast(Predicate<T>) se utiliza para buscar un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve la última aparición de ese elemento en toda la Lista<T>. Propiedades de la lista:

  • Es diferente de las arrays. Una lista se puede cambiar de tamaño dinámicamente, pero las arrays no.
  • La clase de lista puede aceptar nulo como un valor válido para los tipos de referencia y también permite elementos duplicados.
  • Si el recuento se vuelve igual a la capacidad, la capacidad de la lista aumenta automáticamente al reasignar la array interna. Los elementos existentes se copiarán en la nueva array antes de agregar el nuevo elemento.

Sintaxis:

public T FindLast (Predicate<T> match);

Parámetro:

match: Es el delegado Predicate<T> que define las condiciones del elemento que se va a buscar.

Valor devuelto: si el elemento encontrado, este método devolverá el último elemento que coincida con las condiciones definidas por el predicado especificado; de lo contrario, devolverá el valor predeterminado para el tipo T. Excepción: este método dará ArgumentNullException si la coincidencia es nula. Los siguientes programas ilustran el uso del método List<T>.FindLast(Predicate<T>): Ejemplo 1: 

CSharp

// C# Program to get the last occurrence
// of the element that match the specified
// conditions defined by the predicate
using System;
using System.Collections;
using System.Collections.Generic;
 
class Geeks {
 
    // function which checks whether an
    // element is even or not. Or you can
    // say it is the specified condition
    private static bool isEven(int i)
    {
        return ((i % 2) == 0);
    }
 
// Main Method
public static void Main(String[] args)
{
 
    // Creating an List<T> of Integers
    List<int> firstlist = new List<int>();
 
    // Adding elements to List
    firstlist.Add(4);
    firstlist.Add(2);
    firstlist.Add(7);
    firstlist.Add(2);
    firstlist.Add(6);
    firstlist.Add(4);
    firstlist.Add(3);
 
    Console.WriteLine("Elements Present in List:\n");
 
    int p = 0;
 
    // Displaying the elements of List
    foreach(int k in firstlist)
    {
        Console.Write("At Position {0}: ", p);
        Console.WriteLine(k);
        p++;
    }
 
    Console.WriteLine(" ");
 
    // Will give the last occurrence of the
    // element of firstlist that match the
    // conditions defined by predicate
    Console.Write("Index of Last element that fulfill the conditions: ");
    Console.WriteLine(firstlist.LastIndexOf(firstlist.FindLast(isEven)));
    Console.Write("Element is: ");
    Console.Write((firstlist.FindLast(isEven)));
}
}
Producción:

Elements Present in List:

At Position 0: 4
At Position 1: 2
At Position 2: 7
At Position 3: 2
At Position 4: 6
At Position 5: 4
At Position 6: 3
 
Index of Last element that fulfill the conditions: 5
Element is: 4

Ejemplo 2: 

CSharp

// C# Program to get the last occurrence
// of the element that match the specified
// conditions defined by the predicate
using System;
using System.Collections;
using System.Collections.Generic;
 
class Geeks {
 
    // function which checks whether an
    // element is even or not. Or you can
    // say it is the specified condition
    private static bool isEven(int i)
    {
        return ((i % 2) == 0);
    }
 
// Main Method
public static void Main(String[] args)
{
 
    // Creating an List<T> of Integers
    List<int> firstlist = new List<int>();
 
    // Adding elements to List
    firstlist.Add(17);
    firstlist.Add(19);
    firstlist.Add(21);
    firstlist.Add(9);
    firstlist.Add(75);
    firstlist.Add(19);
    firstlist.Add(73);
 
    Console.WriteLine("Elements Present in List:\n");
 
    int p = 0;
 
    // Displaying the elements of List
    foreach(int k in firstlist)
    {
        Console.Write("At Position {0}: ", p);
        Console.WriteLine(k);
        p++;
    }
 
    Console.WriteLine(" ");
 
    // it will return index -1 as no element
    // found in the list which specified
    // the conditions and so element value
    // will be 0 as the list contains Integers
    Console.Write("Index of Last element that fulfill the conditions: ");
    Console.WriteLine(firstlist.LastIndexOf(firstlist.FindLast(isEven)));
    Console.Write("Element is: ");
    Console.Write((firstlist.FindLast(isEven)));
}
}
Producción:

Elements Present in List:

At Position 0: 17
At Position 1: 19
At Position 2: 21
At Position 3: 9
At Position 4: 75
At Position 5: 19
At Position 6: 73
 
Index of Last element that fulfill the conditions: -1
Element is: 0

Complejidad de tiempo: O(n) para el método FindLast

Espacio auxiliar: O(n) donde n es el tamaño de la lista

Referencia:

Publicación traducida automáticamente

Artículo escrito por Kirti_Mangal 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 *