View on GitHub

aulas-programacao-csharp

Materiais de Aula - Programação de Computadores com C#

Listas

📽 Veja esta vídeo-aula no Youtube

Programa da vídeo-aula:

Program.cs:

using System;
using System.Collections.Generic;
using System.Linq;

namespace AulaListas
{
    class Program
    {
        static void Main(string[] args)
        {
            // Listas: coleções fortemente tipadas
            // Declaração e inicialização
            List<int> numeros;
            numeros = new List<int>();

            // Adicionando itens
            numeros.Add(42);
            numeros.Add(-35);
            numeros.Add(42);
            numeros.Add(0);

            // Quantidade de itens
            Console.WriteLine($"Quantidade = {numeros.Count}");
            numeros.Add(-295);
            Console.WriteLine($"Quantidade = {numeros.Count}");

            // Recuperando elemento pela posição
            Console.WriteLine($"Elemento da posição 3: {numeros.ElementAt(3)}");
            Console.WriteLine($"Elemento da posição 1: {numeros.ElementAt(1)}");

            // Encontrando um elemento pelo conteúdo
            Console.WriteLine($"Posição de -295: {numeros.IndexOf(-295)}");
            Console.WriteLine($"Posição de 651591: {numeros.IndexOf(651591)}");

            // Removendo itens: pela posição e pelo conteúdo
            Console.WriteLine($"Elemento da posição 3: {numeros.ElementAt(3)}");
            numeros.RemoveAt(3);
            Console.WriteLine($"Elemento da posição 3: {numeros.ElementAt(3)}");
            numeros.Remove(42);

            // Iterando com foreach
            Console.WriteLine("Lista:");

            foreach (int numero in numeros)
            {
                Console.Write($"{numero} ");
            }

            // Limpando a lista
            numeros.Clear();
            Console.WriteLine($"\nItens após limpeza = {numeros.Count}");

            // Sintaxe resumida
            List<int> n2 = new List<int> {1, 34, 95, 280, -167};

            // Listas de strings
            List<string> nomesMasculinos = new List<string>
            {
                "João",
                "Mario",
                "José"
            };

            List<string> nomesFemininos = new List<string>();
            nomesFemininos.Add("Joana");
            nomesFemininos.Add("Maria");
            nomesFemininos.Add("Josefa");

            List<string> nomes = new List<string>();

            // Adicionando uma lista em outra
            nomes.AddRange(nomesFemininos);
            nomes.AddRange(nomesMasculinos);

            foreach(string nome in nomes)
            {
                Console.WriteLine($"Nome = {nome}");
            }

            // Listas de objetos
            List<Pessoa> amigos = new List<Pessoa>
            {
                new Pessoa() { Nome = "Neri", Idade = 25 },
                new Pessoa() { Nome = "Ermogenes", Idade = 17 }
            };

            Pessoa p3 = new Pessoa();
            p3.Nome = "Ronaldo";
            p3.Idade = 30;

            amigos.Add(p3);

            foreach(Pessoa p in amigos)
            {
                Console.WriteLine($"amigo = {p.Nome} ({p.Idade})");
            }

            // Linq: min, max, average, sum
            Console.WriteLine($"menor número = {n2.Min()}");
            Console.WriteLine($"maior número = {n2.Max()}");
            Console.WriteLine($"média dos números = {n2.Average()}");
            Console.WriteLine($"soma dos números = {n2.Sum()}");

            // Linq: filtrando com expressões lambda, e ordenando
            List<string> nomesComJ = nomes
                .Where(n => n.ToUpper().StartsWith("J"))
                .OrderBy(n => n)
                .ToList();
            
            foreach(string nome in nomesComJ)
            {
                Console.WriteLine($"nome com J = {nome}");
            }

            List<Pessoa> amigosVelhos = amigos
                .Where(amigo => amigo.Idade >= 18)
                .OrderByDescending(amigo => amigo.Idade)
                .ToList();

            foreach(Pessoa amigoVelho in amigosVelhos)
            {
                Console.WriteLine($"amigo velho = {amigoVelho.Nome} ({amigoVelho.Idade})");
            }

            // Outras coleções: Filas
            Queue<string> filaPao = new Queue<string>();
            filaPao.Enqueue("Anastacia");
            filaPao.Enqueue("Deodato");
            filaPao.Enqueue("Madalena");

            Console.WriteLine($"tamanho da fila do pão = {filaPao.Count}");

            string proximo = filaPao.Dequeue();
            Console.WriteLine($"Atendendo {proximo}");
            Console.WriteLine($"tamanho da fila do pão = {filaPao.Count}");

            // Outras coleções: Pilhas
            Stack<string> caminhaoMudanca = new Stack<string>();
            caminhaoMudanca.Push("Roupeiro");
            caminhaoMudanca.Push("Sofá");
            caminhaoMudanca.Push("Plantas");

            Console.WriteLine($"Tamanho do caminhão de mudança = {caminhaoMudanca.Count}");

            Console.WriteLine($"Retirado {caminhaoMudanca.Pop()}");
            Console.WriteLine($"Retirado {caminhaoMudanca.Pop()}");
        }
    }
}

Pessoa.cs

namespace AulaListas
{
    class Pessoa
    {
        public string Nome { get; set; }
        public int Idade { get; set; }
    }
}

Saída:

Quantidade = 4
Quantidade = 5
Elemento da posição 3: 0
Elemento da posição 1: -35
Posição de -295: 4
Posição de 651591: -1
Elemento da posição 3: 0
Elemento da posição 3: -295
Lista:
-35 42 -295
Itens após limpeza = 0
Nome = Joana
Nome = Maria
Nome = Josefa
Nome = João
Nome = Mario
Nome = José
amigo = Neri (25)
amigo = Ermogenes (17)
amigo = Ronaldo (30)
menor número = -167
maior número = 280
média dos números = 48,6
soma dos números = 243
nome com J = Joana
nome com J = João
nome com J = José
nome com J = Josefa
amigo velho = Ronaldo (30)
amigo velho = Neri (25)
tamanho da fila do pão = 3
Atendendo Anastacia
tamanho da fila do pão = 2
Tamanho do caminhão de mudança = 3
Retirado Plantas
Retirado Sofá

Material oficial

Faça também o tutorial interativo oficial.