GENERIC COLLECTION
LIST<T>
List<T> is a set of strongly typed objects that can be accessed by index and by methods for sorting, searching and editing the list.
using System;
using System.Collections.Generic;
namespace CollectionGeneriche
{
class Program
{
static void Main(string[] args)
{
Console.Write("***************************************************************");
Console.Write("\n");
Console.WriteLine("LIST<T>");
//LIST<T>
//Aggiungo elementi usando metodo Add
List<string> city = new List<string>();
city.Add("Milano");
city.Add("Torino");
city.Add("Roma");
string[] bigCity = new []{"New York","London","Chicago"};
//Aggiungo elementi usando metodo AddRange
city.AddRange(bigCity);
//Aggiungo elementi usando la collection-initializer syntax
List<string> city1 = new List<string>(){"Napoli,Firenze,Perugia"};
//Accedo agli elementi con gli indici, si può usare la struttura Index
string prima = city[0];
string ultima = city[^1];
Console.Write($"{prima} {ultima} ");
Console.Write("\n");
//Seleziono le prime 4 citta
string[] arr = city.ToArray()[0..4];
foreach (var item in arr)
Console.Write(item + " ");
Console.Write("\n");
//scorro con linq tutte le città
city.ForEach(c => Console.Write(c +" "));
Console.Write("\n");
List<Person> person = new List<Person>(){
new Person(){Id=1,Nome="Mario",Cognome="Rossi"},
new Person(){Id=2,Nome="Mario",Cognome="Verdi"},
new Person(){Id=3,Nome="Mario",Cognome="Bianchi"}
};
Person p = person.Find(x=>x.Cognome=="Rossi");
if(p!=null)
Console.WriteLine(p.Id);
List<Person> p1 = person.FindAll(x=>x.Nome=="Mario");
List<int> num = new List<int>(){5,10,15,20};
//Remove element from list
num.Remove(5);//rimuove il 5
num.RemoveAt(1);//rimuove il numero di indice 1 cioè 15 (based zero index)
//Check item
Console.WriteLine(num.Contains(5));
}
class Person
{
private int id;
private string nome;
private string cognome;
public int Id
{
get => id;
set => id = value;
}
public string Nome
{
get => nome;
set => nome = value;
}
public string Cognome
{
get => cognome;
set => cognome = value;
}
}
}
}
QUEUE<T>
Queue<T> stores the values in a First In First Out (FIFO) structure. Maintains the order in which the values were added. Provides an Enqueue () method to add values and a Dequeue() method to retrieve values from the collection by removing them. If you don’t want to remove the values, use the Peek() method.
using System;
using System.Collections.Generic;
namespace CollectionGeneriche
{
class Program
{
static void Main(string[] args)
{
Console.Write("***************************************************************");
Console.Write("\n");
Console.WriteLine("QUEUE<T>");
//QUEUE<T>
Queue<int> queue = new Queue<int>();
queue.Enqueue(10);
queue.Enqueue(20);
queue.Enqueue(33);
while(queue.Count > 0)
Console.Write(queue.Dequeue() + " ");//Dequeue rimuove gli elementi dalla collection
//se non vogliamo rimuovere gli elementi si usa
//il metodo Peek().
Console.Write("\n");
Console.Write(queue.Count);
Console.Write("\n");
queue.Enqueue(10);
queue.Enqueue(20);
queue.Enqueue(30);
Console.Write(queue.Peek());
Console.Write("\n");
Console.Write(queue.Count);
Console.Write("\n");
Console.Write("***************************************************************");
Console.Write("\n");
}
public class Person
{
private int id;
private string nome;
private string cognome;
public int Id
{
get => id;
set => id = value;
}
public string Nome
{
get => nome;
set => nome = value;
}
public string Cognome
{
get => cognome;
set => cognome = value;
}
}
}
}
STACK<T>
Stack<T> stores the values in a LIFO (Last In First Out) structure. Provides a Push() method to add values and a Pop() method to retrieve values from the collection by removing them. If you don’t want to remove the values, use the Peek() method.
using System;
using System.Collections.Generic;
namespace CollectionGeneriche
{
class Program
{
static void Main(string[] args)
{
Console.Write("***************************************************************");
Console.Write("\n");
Console.WriteLine("STACK<T>");
//STACK<T>
Stack<int> myStack = new Stack<int>();
myStack.Push(1);
myStack.Push(2);
myStack.Push(3);
while(myStack.Count > 0)
Console.Write(myStack.Pop() + " ");
Console.Write("\n");
Console.Write(myStack.Count);
Console.Write("\n");
myStack.Push(1);
myStack.Push(2);
myStack.Push(3);
Console.Write(myStack.Peek());
Console.Write("\n");
Console.Write(myStack.Count);
Console.Write("\n");
Console.Write("***************************************************************");
Console.Write("\n");
}
public class Person
{
private int id;
private string nome;
private string cognome;
public int Id
{
get => id;
set => id = value;
}
public string Nome
{
get => nome;
set => nome = value;
}
public string Cognome
{
get => cognome;
set => cognome = value;
}
}
}
}
DICTIONARY<TKey, TValue>
Dictionary<TKey, TValue> is a generic set that stores key-value pairs in no particular order. Keys must be unique and not null; values can be null or duplicate. You can access the values by passing the associated key in the indexer, for example myDictionary [key]
using System;
using System.Collections.Generic;
namespace CollectionGeneriche
{
class Program
{
static void Main(string[] args)
{
//DICTIONARY<TKey, TValue>
Console.Write("***************************************************************");
Console.Write("\n");
Console.WriteLine("DICTIONARY<TKey, TValue>");
IDictionary<int, string> number = new Dictionary<int, string>();
number.Add(1,"uno"); //adding a key/value using the Add() method
number.Add(2,"due");
number.Add(3,"tre");
foreach (KeyValuePair<int,string> k in number)
Console.Write($"Key: {k.Key} Value: {k.Value} ");
Console.Write("\n");
//creating a dictionary using collection-initializer syntax
var ps = new Dictionary<int,Person>(){
{1,new Person(){Id=1,Nome="Mario",Cognome="Rossi"}},
{2,new Person(){Id=2,Nome="Luigi",Cognome="Verdi"}},
{3,new Person(){Id=3,Nome="Paolo",Cognome="Bianchi"}}
};
foreach (KeyValuePair<int,Person> k in ps)
Console.Write($"Key: {k.Key} Value: {k.Value.Cognome} ");
Console.Write("\n");
if(ps.ContainsKey(1))
Console.Write("Contains Key " + ps[1].Id + " " + ps[1].Nome + " " + ps[1].Cognome);
Console.Write("\n");
//usare TryGetValue() per restituire un valore di una chiave sconosciuta.
Person person1;
if(ps.TryGetValue(4,out person1))
Console.Write(person1.Id);
//Update
ps[1] = new Person(){Id=4,Nome="Susanna", Cognome="Rossi"};
//Remove Element
if(ps.ContainsKey(3))
ps.Remove(3);
foreach (KeyValuePair<int,Person> k in ps)
Console.Write($"Key: {k.Key} Value: {k.Value.Id + " " +k.Value.Nome + " " + k.Value.Cognome} ");
Console.Write("\n");
ps.Clear();//Rimuove tutto chiavi e valori.
Console.Write("***************************************************************");
Console.Write("\n");
}
public class Person
{
private int id;
private string nome;
private string cognome;
public int Id
{
get => id;
set => id = value;
}
public string Nome
{
get => nome;
set => nome = value;
}
public string Cognome
{
get => cognome;
set => cognome = value;
}
}
}
}
SORTEDLIST<TKey, TValue>
SortedList<TKey, TValue> stores key and value pairs. Automatically adds items in ascending key order by default.
using System;
using System.Collections.Generic;
namespace CollectionGeneriche
{
class Program
{
static void Main(string[] args)
{
//SORTEDLIST<TKey, TValue>
Console.Write("***************************************************************");
Console.Write("\n");
Console.WriteLine("SORTEDLIST<TKey, TValue>");
SortedList<int,string> numbers = new SortedList<int, string>(){
{1,"uno"},
{5,"cinque"},
{3,"tre"}
};
numbers.Add(2,"due");
numbers.Add(4,"quattro");
numbers.Add(6,"sei");
string ultimo = numbers[6]; //Accesso al valore
numbers[3]="TRE";//Update
Console.Write("\n");
string result;
if(numbers.TryGetValue(4, out result))
Console.WriteLine("TryGetValue Key: {0}, TryGetValue Value: {1}", 4, result);
Console.Write("\n");
numbers.Remove(1);
numbers.RemoveAt(0);
foreach(var item in numbers)
Console.Write($"Key : {item.Key} value: {item.Value} ");//Ordine crescente di chiave
}
}

Leave A Comment