Professional Documents
Culture Documents
Bài tập về List-Stack-Queue-Dictionary
Bài tập về List-Stack-Queue-Dictionary
ArrayList
Để tạo một đối tượng của ArrayList ta sử dụng từ khóa new.
ArrayList arlist = new ArrayList();
// hoặc
var arlist = new ArrayList();
Chúng ta có thể sử dụng phương thức Add() hoặc cú pháp trình khởi tạo đối
tượng để thêm một phần tử vào ArrayList.Trong một ArrayList có thể chứa nhiều
giá trị null trùng lặp nhau.
// thêm phần tử vào ArrayList sử dụng phương thức Add()
var arlist1 = new ArrayList();
arlist1.Add(1);
arlist1.Add("Freetuts.net");
arlist1.Add(" ");
arlist1.Add(true);
arlist1.Add(4.5);
arlist1.Add(null);
// thêm phần tử vào ArrayList bằng cách khởi tạo cho các đối tượng
var arlist2 = new ArrayList()
{
2, "Freetuts.net", true, 4.5, null
};
//khai báo một ArrayList
var arlist2 = new ArrayList()
{
1, "Freetuts.net", " ", true, 4.5, null
};
//khai báo một ArrayList
int[] arr = { 100, 200, 300, 400 };
arList.Remove(null);
arList.RemoveAt(4);
arList.RemoveRange(0, 2);
Sử dụng phương thức Contains() để kiểm tra một phần tử được chỉ định có
nằm trong ArrayList hay không. Nó trả về true nếu tồn tại và trả về false nếu không
tồn tại.
ArrayList arList = new ArrayList()
{
1,
"Freetuts.net",
300,
4.5f,
300
};
Console.WriteLine(arList.Contains(300)); // true
Console.WriteLine(arList.Contains("Freetuts.net")); // true
Console.WriteLine(arList.Contains(10)); // false
Console.WriteLine(arList.Contains("Freetuts")); // false
2. SortedList
Ví dụ dưới đây minh họa cho cách tạo một SortedList và thêm các cặp
key.value vào trong SortedList.
numberNames.Add(3, "Three");
numberNames.Add(1, "One");
numberNames.Add(2, "Two");
numberNames.Add(4, null);
numberNames.Add(10, "Ten");
numberNames.Add(5, "Five");
Ta có thể truy cập vào SortedList bằng cách sử dụng key để lấy hoặc đặt lại
value trong SortedList.
SortedList<int,string> numberNames = new SortedList<int,string>()
{
{3, "Three"},
{1, "One"},
{2, "Two"}
};
string result;
3. Stack
Ví dụ dưới đây minh họa cho việc tạo Stack và thêm các item vào Stack bằng
phương thức Push().
using System;
using System.Collections.Generic;
class Program
{
public static void Main(string[] args)
{
//khai báo một stack lưu trữ các item kiểu int
Stack<int> numbers = new Stack<int>();
//sử dụng phương thức Push() để lưu trữ các item
numbers.Push(1);
numbers.Push(2);
numbers.Push(3);
numbers.Push(4);
//sử dụng foreach để in phần tử trong Stack
Console.WriteLine("\nCác phần tử trong Stack là:");
foreach (var item in numbers)
Console.Write(item + ",");
Console.WriteLine("\n\n---------------------------------");
Console.WriteLine("Chương trình này được đăng tại Freetuts.net");
}
}
Console.WriteLine("\n\n---------------------------------");
Console.WriteLine("Chương trình này được đăng tại Freetuts.net");
}
}
Phương thức Pop() trả về item cuối cùng trong Stack đồng thời loại bỏ nó khỏi
Stack.Nếu Stack trống thì nó trả về InvalidOperationException, vì vậy hãy luôn
kiểm tra số phần tử trong ngăn xếp trước khi gọi phương thức Pop().
using System;
using System.Collections;
public class Program
{
public static void Main()
{
Stack myStack = new Stack();
myStack.Push(1);
myStack.Push(2);
myStack.Push(3);
myStack.Push(4);
Console.WriteLine();
Console.WriteLine("Số phần tử trong Stack sau khi xóa: {0}",
myStack.Count);
Console.WriteLine("\n\n---------------------------------");
Console.WriteLine("Chương trình này được đăng tại Freetuts.net");
}
}
Phương thức Contains() kiểm tra một item có tồn tại trong Stack hay không.
Nếu tồn tại nó thì trả về true, nếu không thì trả về false.
using System;
using System.Collections;
public class Program
{
public static void Main()
{
Stack myStack = new Stack();
myStack.Push(1);
myStack.Push(2);
myStack.Push(3);
myStack.Push(4);
Console.WriteLine();
Console.WriteLine("Số phần tử trong Stack sau khi dùng Peek(): {0}",
myStack.Count);
Console.WriteLine("\n\n---------------------------------");
Console.WriteLine("Chương trình này được đăng tại Freetuts.net");
}
}
Phương thức Contains() kiểm tra một item có tồn tại trong Stack hay không.
Nếu tồn tại nó thì trả về true, nếu không thì trả về false.
using System;
using System.Collections.Generic;
Console.WriteLine("\n\n---------------------------------");
Console.WriteLine("Chương trình này được đăng tại Freetuts.net");
}
}
4. Queue
Chúng ta có thể tạo đối tượng của Queue bằng cách chỉ định một tham số có
kiểu dữ liệu mà nó có thể lưu trữ. Queue cho phép lưu giá trị null (đối với các loại
tham chiếu) và các giá trị trùng lặp.
Queue<int> callerIds = new Queue<int>();
Ví dụ dưới đây minh họa cho việc tạo Queue và thêm các item vào Queue
bằng phương thức Enqueue().
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
//khai báo một queue
Queue<int> callerIds = new Queue<int>();
//sử dụng phương thức Enqueue() để thêm item vào Queue
callerIds.Enqueue(1);
callerIds.Enqueue(2);
callerIds.Enqueue(3);
callerIds.Enqueue(4);
Console.WriteLine("\nCác phần tử trong Queue: ");
foreach (var id in callerIds)
Console.WriteLine(id);
Console.WriteLine("\n\n---------------------------------");
Console.WriteLine("Chương trình này được đăng tại Freetuts.net");
}
}
Console.WriteLine("\n\n---------------------------------");
Console.WriteLine("Chương trình này được đăng tại Freetuts.net");
}
}
Còn phương thức Peek() chỉ lấy phần tử đầu tiên trong Queue mà không loại
bỏ nó.
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
Queue<string> strQ = new Queue<string>();
strQ.Enqueue("H");
strQ.Enqueue("e");
strQ.Enqueue("l");
strQ.Enqueue("l");
strQ.Enqueue("o");
Console.WriteLine("\n\n---------------------------------");
Console.WriteLine("Chương trình này được đăng tại Freetuts.net");
}
}
Phương thức Contains() kiểm tra một item có tồn tại trong Queue hay không.
Nếu tồn tại nó thì trả về true, nếu không thì trả về false.
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
Queue<int> callerIds = new Queue<int>();
callerIds.Enqueue(1);
callerIds.Enqueue(2);
callerIds.Enqueue(3);
callerIds.Enqueue(4);
Console.WriteLine(callerIds.Contains(2)); //true
Console.WriteLine(callerIds.Contains(10)); //false
Console.WriteLine("\n\
n---------------------------------");
Console.WriteLine("Chương trình này được đăng tại Freetuts.net");
}
}
6. Dictionary
Chúng ta có thể tạo một Dictionary bằng cách truyền vào key và value cần lưu
trữ. Ví dụ dưới đây là cách tạo một Dictionary và cách thêm các cặp key/value cho
nó.
using System;
using System.Linq;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
//khai báo và khởi tạo một Dictionary
var cities = new Dictionary<string, string>(){
{"UK", "London, Manchester, Birmingham"},
{"USA", "Chicago, New York, Washington"},
{"India", "Mumbai, New Delhi, Pune"}
};
Console.WriteLine("----------------------------------------");
Console.WriteLine("Chương trình này được đăng tại Freetuts.net");
}
}
Dictionary có thể được truy cập bằng cách sử dụng indexer (trình chỉ mục) để
chỉ đinh một key liên kết với value.Ta có thể sử dụng phương thức ElementAt() để
lấy KeyValuePair từ chỉ mục được chỉ định.
using System;
using System.Linq;
using System.Collections.Generic;
if(cities.ContainsKey("France")){
cities["France"] = "Paris";
}
Console.WriteLine("\n-----------------Dictionary sau khi cập
nhật----------------------");
foreach(var kvp in cities)
Console.WriteLine("Key: {0}, Value: {1}", kvp.Key, kvp.Value);
Console.WriteLine("----------------------------------------");
Console.WriteLine("Chương trình này được đăng tại Freetuts.net");
}
}
Cập nhật value của một key bằng cách chỉ định một key trong indexer (trình
chỉ mục). Trước khi cập nhật ta nên kiểm tra key có tồn tại hay không bằng phương
thức ContainsKey().
Để xóa các cặp key/value trong Dictionary ta có hai phương thức. Phương
thức Remove() để xóa một cặp key/value và phương thức Clear() để xóa tất cả các
cặp key/value.
using System;
using System.Collections.Generic;
Console.WriteLine("----------------------------------------");
Console.WriteLine("Chương trình này được đăng tại Freetuts.net");
}
}
7. HashSet
HashSet<int> hashset1 = new HashSet<int>() {5,2,3,4};
Console.WriteLine($"Phần tử trong hashset1 {hashset1.Count}");
foreach (var v in hashset1)
{
Console.Write(v + " ");
}
Console.WriteLine();
/*
Phần tử trong hashset1 4
5 2 3 4
hashset1 là tập chứa hashset2
*/