Você está aqui: C# ::: Coleções (Collections) ::: List<T>

Como pesquisar um elemento em uma lista do C# usando a função Find() e um Predicate

Quantidade de visualizações: 14677 vezes
Em algumas situações gostaríamos de pesquisar e retornar o primeiro elemento de uma List<T> que obedece a algum critério de busca. Assim, poderíamos, por exemplo, pesquisar um nome que começa com uma determinada palavra ou um preço de produto maior ou igual a um determinado valor.

Para tais situações podemos usar o método Find(). Este método possui a seguinte assinatura:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

public T Find(
  Predicate<T> match
)

Veja que o método pede um delegate do tipo Predicate<T> que define as condições para a pesquisa do elemento. Se o elemento for encontrado, este é retornado. Caso contrário, o valor padrão para T é retornado (null para referências).

Veja um trecho de código no qual eu mostro como usar o método Find() em combinação com um método personalizado que permite usar um delegate anônimo. Desta forma conseguimos fornecer, em tempo de execução, o argumento para o parâmetro match do Predicate:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

static void Main(string[] args){
  // vamos criar um objeto da classe List<T>
  List<string> nomes = new List<string>();

  // vamos inserir quatro valores na lista
  nomes.Add("Osmar J. Silva");
  nomes.Add("Salvador Miranda de Andrade");
  nomes.Add("Dyego Fernandes de Souza");
  nomes.Add("Marcos de Paula Rocha");
  
  // vamos pesquisar um valor na lista usando um método personalizado
  // Neste exemplo vamos retornar o primeiro nome que contenha a palavra
  // "Dyego"
  string nome = encontrar(nomes, "Dyego");

  // vamos verificar se o nome foi encontrado
  if(nome != null){
    // foi encontrado....vamos retornar o resultado
    Console.WriteLine(nome);
  }
  else{
    Console.WriteLine("Nenhum nome encontrado.");
  }

  // vamos pausar a execução
  Console.Write("\n\nPressione qualquer tecla para continuar...");
  Console.ReadKey();
}

// método auxiliar que permite encontrar um valor na lista usando
// o método Find() da classe List<T> e um Predicate
static string encontrar(List<string> lista, string texto){
  string encontrado = null;

  // vamos pesquisar o valor na lista usando seu método Find()
  // Aqui o primeiro nome que passar no critério de busca será retornado
  encontrado = lista.Find(delegate(string valor){
      return valor.Contains(texto);
  });

  return encontrado;
}

O método Find() executa uma busca linear. Assim, este método é uma operação O(n), onde n é a quantidade de elementos na lista.

Link para compartilhar na Internet ou com seus amigos:

C ::: Dicas & Truques ::: Strings e Caracteres

Como escrever uma função is_numeric() em C que verifica se uma string contém apenas dígitos de 0 a 9

Quantidade de visualizações: 9791 vezes
Em algumas situações precisamos verificar se uma string contém apenas dígitos de 0 a 9, ou seja, é um valor numérico inteiro válido. Para isso podemos usar a função personalizada em C que mostro nesta dica. Veja que o segredo é passar todos os caracteres individualmente para a função isdigit(). Veja o código:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

// função personalizada que permite verificar se uma
// string contém apenas dígitos de 0 a 9
int is_numeric(const char *str){
  int res = 1; // passou no teste

  // vamos percorrer todos os caracteres da string
  // e testar se cada um é um dígito. Se não
  // for nós marcamos res como 0 e retornamos
  while(*str){
    if(!isdigit(*str)){
      res = 0;
      break;
    }

    // vamos passar para o próximo caractere
    str++;
  }

  return res;
}

int main(int argc, char *argv[]){
  char valor[20]; // vamos guardar o valor digitado aqui

  // vamos ler o valor informado pelo usuário
  printf("Digite qualquer coisa e tecle ENTER: ");
  gets(valor);

  // vamos verificar se o usuário informou uma string
  // que contém apenas dígitos de 0 a 9
  if(is_numeric(valor))
    printf("Voce informou uma string numerica");
  else
    printf("Voce NAO informou uma string numerica");

  puts("\n\n");
  system("PAUSE");
  return 0;
}

E, antes que perguntem como é possível verificar se a string contém um valor fracionário válido, a seguinte alteração pode ser feita:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

int is_numeric(const char *str){
  int res = 1; // passou no teste

  // vamos percorrer todos os caracteres da string
  // e testar se cada um é um dígito ou uma vírgula. Se não
  // for nós marcamos res como 0 e retornamos
  while(*str){
    if((!isdigit(*str)) and (*str != ',')){
      res = 0;
      break;
    }

    // vamos passar para o próximo caractere
    str++;
  }

  return res;
}



PHP ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes)

Como testar se uma variável é do tipo array em PHP usando a função is_array()

Quantidade de visualizações: 11736 vezes
Em algumas situações nós precisamos verificar se uma determinada variável é do tipo array (vetor ou matriz). Em PHP esse procedimento pode ser feito com o auxílio da função is_array(), que recebe uma variável e retorna verdadeiro se ela é do tipo array e falso em caso contrário.

Veja o código PHP completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

<?php
  // vamos criar um array de inteiros
  $valores = Array(5, 2, 7, 1);

  // vamos testar se a variável é do tipo array
  if(is_array($valores)){
    echo 'A variável $valores é do tipo array.';
  }
  else{
    echo 'A variável $valores NÃO é do tipo array.';
  }
?>

Ao executar este código PHP nós teremos o seguinte resultado:

A variável $valores é do tipo array.


C++ ::: Dicas & Truques ::: Strings e Caracteres

Como retornar o tamanho de uma string em C++ usando a função size()

Quantidade de visualizações: 7694 vezes
Nesta dica mostrarei como podemos obter a quantidade de caracteres de uma string em C++ usando a função size() da classe string. Esta função não exige nenhum argumento e retorna um número inteiro contendo a quantidade de caracteres na string.

Veja o código C++ completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

#include <string>
#include <iostream>
 
using namespace std;
 
// função principal do programa C++ 
int main(int argc, char *argv[]){
  // vamos declarar um objeto string
  string frase = "Gosto de C++";
 
  // vamos obter o tamanho da string
  size_t tamanho = frase.size();
  
  // e mostramos o resultado
  cout << "A frase possui " << tamanho << " caracteres."; 
     
  cout << "\n" << endl;	    
  system("PAUSE"); // pausa o programa
  return EXIT_SUCCESS;
}

Ao executarmos este código C++ nós teremos o seguinte resultado:

A frase possui 12 caracteres.


Java ::: Dicas & Truques ::: Formatação de datas, strings e números

Java para iniciantes - Como formatar uma string no estilo printf da linguagem C usando a classe Formater do Java

Quantidade de visualizações: 11732 vezes
Nesta dica eu mostro como é possível usar o método format() da classe Formater da linguagem Java para formatar strings ao bom e velho estilo da linguagem C, ou seja, com marcadores %d para inteiros, %f para decimais, por exemplo.

Veja o exemplo completo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

import java.util.*;
 
public class Estudos{
  public static void main(String[] args){
 
    int pessoas = 20;    
 
    StringBuilder string = new StringBuilder();
    Formatter fm = new Formatter(string);
 
    fm.format("Havia %d pessoas lá.", pessoas);
 
    System.out.println(string);    
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

Havia 20 pessoas lá.


Java ::: Pacote java.awt.event ::: KeyEvent

Java Swing - Como detectar as teclas Insert ou Delete usando o método getKeyCode() da classe KeyEvent do Java

Quantidade de visualizações: 2991 vezes
Em algumas situações nós precisamos detectar o pressionamento das teclas Insert ou Delete. Para isso podemos usar o método getKeyCode() da classe KeyEvent e testar se o código equivale a uma das constantes KeyEvent.VK_INSERT (Ins) ou KeyEvent.VK_DELETE (Del).

Veja um trecho de código no qual testamos se alguma destas duas teclas foi pressionada:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Janela extends JFrame implements KeyListener{
  public Janela(){
    super("Eventos do Teclado");
    Container c = getContentPane();
    FlowLayout layout = new FlowLayout(FlowLayout.LEFT);
    c.setLayout(layout);
    
    // vamos adicionar o objeto listener 
    addKeyListener(this);

    setSize(350, 250);
    setVisible(true);
  }
    
  @Override
  public void keyPressed(KeyEvent e){
    // a tecla Insert foi pressionada?
    if(e.getKeyCode() == KeyEvent.VK_INSERT){
      JOptionPane.showMessageDialog(null, "A tecla Insert foi pressionada");
    }
    // a tecla Enter Delete pressionada?
    else if(e.getKeyCode() == KeyEvent.VK_DELETE){
      JOptionPane.showMessageDialog(null, "A tecla Delete foi pressionada");
    }
    else{
      JOptionPane.showMessageDialog(null, "Outra tecla foi pressionada");  
    }
  }
    
  @Override
  public void keyReleased(KeyEvent e){
    // sem implementação
  }

  @Override
  public void keyTyped(KeyEvent e){
    // sem implementação
  }   
  
  public static void main(String args[]){
    Janela j = new Janela();
    j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

É importante observar que as teclas Insert e Delete podem ser detectadas somente nos eventos keyPressed e keyReleased.


Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 80 usuários muito felizes estudando em nosso site.