Datakurser
Aktuell vecka: 48

Tillbaka till toppen

C# Listor (Liknar array(vektor))

Inledning

Både array(vektor) och listor är färdigdefinierade objekt som vi skapar med ordet "new". Fördelen med vektor är att de kan vara multidimensionella. Fördelen med listor är att det är enkelt att ta bort element och lägga till nya element. En stor fördel med listor är även att vi inte behöver ange hur många element det ska vara i listan från start.

objektOfta har man behov av att arbeta med långa listor med tal. Istället för att skapa en variabel för varje tal så är det möjligt att arbeta med en variabel som istället innehåller möjligheten att lagra flera tal. Man kallar sådana här variabler med "flera fack" för fält, lista eller det engelska uttrycket array. Man kan jämföra dem med en hylla som har flera, numrerade fack, eller rent av med en gatuadress (gatunamn och husnummer).
För att få tag i ett av de värden man lagrat i listan anger du namnet på variabeln (hyllan, gatunamnet) och fackets nummer eller index (hyllnummer, husnummer).
Ex.
Tidigare:

int tal1, tal2, tal3, tal4, tal5;

Array(Vektor):

int[ ] talserie = new int[5];
// Här i deklarationen anger siffran inom hakparenteserna antal element i fältet.

Lista:

// Deklaration av Listan "testLista", vi behöver inte ange antal "lådor"
List
<int> testLista = new List<int>();


Vilken typ av värden våran lista ska innehålla anger vi mellan < och >. Vi kan lika gärna lägga in decimaltal eller textsträngar.

Ett litet första exempel

//Lista Ex 1:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<int> testLista = new List<int>();
            int i, summa = 0;
            string rad;

            //***** läs in heltal *****
            while (true)
            {
                Console.WriteLine(" Ange ett heltal (Q för att avbryta): ");
                rad = Console.ReadLine();
                if (rad[0] == 'Q' || rad[0] == 'q') break;
                testLista.Add(Convert.ToInt32(rad));
            }

            //***** skriv ut de nya talen *****
            for (i = 0; i < testLista.Count; i++)
            {
                Console.WriteLine(" Element " + i + " = " + testLista[i]);
            }

            //***** summera talen och skriv ut summan *****
            for (i=0; i<testLista.Count; i++)
            {
                summa = summa + testLista[i];
            }
            Console.WriteLine(" Summan av de "+testLista.Count+" talen = " + summa);

            Console.WriteLine(" Summan med 'Sum()' = " + testLista.Sum());

            Console.ReadKey();
        }
    }
}



Färdiga metoder

Som vi såg ovan så har vi redan träffat på metoden Add(element) som lägger till ett nytt värde sist i listan. Sum() som automatiskt summerar alla element. Vi har också träffat på egenskapen Count som håller reda på antalet element i vår lista.

Nedan kan du se några ytterliggare metoder samt loopen foreach.
.Add(...);
.Sort();
.Reverse();
.Insert(index,value);
.RemoveAt(index);
.RemoveRange(index, antal);

.Equals(objekt av listans typ, t ex heltal);

//Lista Ex 2:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
List<int> testLista = new List<int>();
int i, summa = 0;
string rad;

//***** läs in heltal *****
while (true)
{
Console.WriteLine(" Ange ett heltal (Q för att avbryta): ");
rad = Console.ReadLine();
if (rad[0] == 'Q' || rad[0] == 'q') break;
testLista.Add(Convert.ToInt32(rad));
}

Console.WriteLine("***** skriv ut de nya talen sorterade*****");
testLista.Sort();
for (i = 0; i < testLista.Count; i++)
{
Console.WriteLine(" Element " + i + " = " + testLista[i]);
}

Console.WriteLine("***** skriv ut de talen i omvänd ordning*****");
testLista.Reverse();
for (i = 0; i < testLista.Count; i++)
{
Console.WriteLine(" Element " + i + " = " + testLista[i]);
}

Console.WriteLine("***** lägg till två tal och skriv ut *****");
testLista.Insert(0, 1);
testLista.Insert(2, 1);
for (i = 0; i < testLista.Count; i++)
{
Console.WriteLine(" Element " + i + " = " + testLista[i]);
}

Console.WriteLine("***** ta bort tal och skriv ut *****");
testLista.RemoveAt(2);
testLista.RemoveRange(2, 2);
for (i = 0; i < testLista.Count; i++)
{
Console.WriteLine(" Element " + i + " = " + testLista[i]);
}

Console.WriteLine("***** checka om talet 1 finns och skriv ut *****");
i = 0;
foreach (int x in testLista)
{
if (x.Equals(1)) Console.WriteLine(" Element " + i + " = 1");
i++;
}

Console.ReadKey();
}
}
}

 

Källor

https://www.tutorialsteacher.com/csharp/csharp-list