Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 22

TM HIU CU TRC D LIU TRONG .

NET FRAMEWORK

1.List
u tin ,List cung cp bn mt cch lm vic hiu qu v kh nng phn b mng t ng.N khng cung cp cch tra cu nhanh trong trng hp tng qut,m bn phi s dng Dictionary cho n.Chng ta tm hiu cch s dng cc phng thc trn lp List,cng nh mt s v d n gin s dng List trong ngn ng C#. By gi ta tm hiu mt s v d v cch thm mt gi tr trong List. bt u ,chng ta tm hiu cch lm th no khai bo mt List c cc gi tr l kiu int v thm cc s vo List.V d ny cho ta thy lm cch no to mt List mi c kch thc khng xc nh v cch thm vo bn s nguyn t.Ch l cc du ngoc nhn l mt phn ca kiu khai bo,n khng phi l ton t iu kin ln hn,hay nh hn.
//chuong trinh them 4 phan tu vao danh sach using System.Collections.Generic; using System; using System.Text; class Program { static void Main() { List<int> list = new List<int>(); list.Add(2); list.Add(3); list.Add(5); list.Add(7); foreach (int i in list) { Console.WriteLine("{0}",i); } } }

Khi bn thc thi chng trnh trn,bin list trong khai bo trn s cha 4 s nguyn trong cu trc d liu ni b ca mnh.S nguyn 2,3,5 v 7 s c lu tr trong mt mng ni b ca List.Bt c khi no bn duyt ni dung ca dnh sch,th cc s nguyn s c truy cp theo th t.
Tip theo ta tm hiu cch thm mt i tng . y chng ta khai bo mt lp ty chnh, v sau thm mt s trng hp ca n vi mt List mi. G vo gia du ngoc nhn l tn ca lp mi :Test. iu ny c ngha l List s ch cha cc i tng thuc lp Test.Bi v kiu Test l mt kiu tham chiu,List trong v d ny s lu tr cc gi tr tham chiu n cc i tng c phn b theo i tng ca lp Test. V d: // Chng trnh cho bit cch i tng vo List

using System.Collections.Generic; class Program { static void Main() { // Add three objects to a List. List<Test> list = new List<Test>(); list.Add(new Test(1, 2)); list.Add(new Test(3, 4)); list.Add(new Test(5, 6)); } class Test { int _a; int _b; public Test(int a, int b) { _a = a; _b = b; } }; } V d trn s phn b mt i tng c cha mt mng ni b cc tham chiu n lp Test. Nhng i tng tham chiu khng cha cc trng s nguyn trn lp Test; thay vo , cc tham chiu cha cc v tr lu tr ca c th lp Test trn. Tip theo ta tm hiu BinarySearch trong List. Bn ang nh gi phng php BinarySearch trn List hoc mng,v mun s dng ti liu vo vic ci thin chng trnh ca bn. BinarySearch l mt thut ton tuyt vi m hones ' trn cc gi tr trong collection sp xp. N c phc tp O (log n), lm cho n hiu qu hn nhng cch tm kim khc trong ngn ng C#.

V D: y chng ta nhn vo mt chng trnh v d s dng phng php dng phng php BinarySearch trn kiu List.Bn phi truyn mt gi tr phng thc ca mt loi s dng trong List. Thng thng, cc chng trnh s dng chui ,v th chng ta s dng kiu y. // chng trnh ny s dng BinarySearch using System; using System.Collections.Generic; class Program { static void Main() { List<string> l = new l.Add("acorn"); l.Add("apple"); l.Add("banana"); l.Add("cantaloupe"); l.Add("lettuce"); l.Add("onion"); l.Add("peach"); l.Add("pepper"); l.Add("squash"); l.Add("tangerine");

List<string>(); // 0 // 1 // 2 // 3 // 4 // 5 // 6 // 7 // 8 // 9

// cai nay tr v tr s ca"peach". int i = l.BinarySearch("peach"); Console.WriteLine(i); // cai nay tr v tr s ca"banana". i = l.BinarySearch("banana"); Console.WriteLine(i); // cai nay tr v tr s ca"apple". i = l.BinarySearch("apple"); Console.WriteLine(i); } } Ba gi tr ca BinarySearch trn l v tr ca peach,banana ,and apple c tm kim trong List. Lu List c xp theo th t alphabetical. BinarySearch s khng lm vic nu List hoc mng ca bn khng c sp xp. N khng quan trng nu bn s dng phn loi s, ch s, hoc ASCII. Ti tm thy y l BinarySearch tr nn hiu qu hn so vi mt tm kim tuyn tnh vi collection ln. List nh hn 100 yu t, tm kin nh phn c th chm do chi ph thc hin. Tip theo ta tm hiu phng thc InsertRange trong List v cch chn mt mng vo List.Bn tht s quan tm n phng thc InsertRange ,n l mt phng thc c xy dng sn trong ngn ng C#. Phng php ny cho php bn chn mt collection ton b vo mt v tr trong List ca bn. V d

u tin,phng thc InsertRange lin quan cht ch ti phng thc AddRange,phng thc ny cho php bn thm mt mng hoc thm mt collection vo cui ca mt List. InsertRange nh on code di y, mt cch chnh xc cho c cc ngoi l nh nhau l n s chn IEnumerable range vo cc thnh phn tn ti, hoc chn vo u.

//chng trnh s dng InsertRange using System; using System.Collections.Generic; class Program { static void Main() { List<int> a = new List<int>(); a.Add(1); a.Add(2); a.Add(5); a.Add(6); // // // // // no chua: 1 2 5 6

int[] b = new int[3]; b[0] = 7; b[1] = 6; b[2] = 7; a.InsertRange(1, b); // Contains: // 1 // 7 [inserted] // 6 [inserted] // 7 [inserted] // 2 // 5 // 6 foreach (int i in a) { Console.WriteLine(i); } } } y chng ta nhn vo bn trong cc th vin lp c s trong NET Framework v thy rng InsertRange c thc hin bng cch s dng Array.Copy v phng php CopyTo trn mng. iu ny c ngha l ton b cc mng bn trong List s phi c sao chp, lm cho phng php InsertRange rt tn km. this.EnsureCapacity(this._size + count); if (index < this._size)

{ Array.Copy(...); } if (this == is2) { Array.Copy(...);

Array.Copy(...); } else { T[] array = new T[count]; is2.CopyTo(array, 0); array.CopyTo(...); } Phng thc Find trong List. Lm th no bn c th xc nh v tr mt phn t trong collection List ca bn bng cch s dng phng thc?Bn c th tm thy cc yu t trong List ca bn bng cch s dng cc phng thc c sn trong C#.Nhng phng php ny cao s r rang v d chnh sa code ca chng trnh.Trong v d ny chng ta s s dng phng thc Find. V D: using System; using System.Collections.Generic;

class Program { static void Main() { List<int> list = new List<int>(new int[] { 19, 23, 29 });

// Finds first element greater than 20 int result = list.Find(item => item > 20);

Console.WriteLine(result); } }

Output

23
M t. Code ny lt qua mi gi tr int trong List, bt u t u, v s kim tra li nu n ln hn 20. Ngi u tin c ngha l, 23 tui, c tr v. Phng php FindAll trn List, y l mt phng thc tr v mt List mi vi cng s phn t c sn. Nu bn mun tm tt c cc yu t ph hp da trn mt thuc tnh, iu ny l hu ch. Trong bi vit ny, chng ta thy cch tm kim cc yu t bng cch tm kim trong collection List t System.Collections.Generic. Nhng phng php ny thun tin v c th gip bn nhn mnh s logic. Tip theo ta tm hiu phng php sp xp trn List.Bn ang s dng List xy dng chng trnh ca bn v cn phi sp xp ni dung ca n tang dn hoc gim dn theo th t.Phng thc sp xp l l tng i vi mt s yu cu,nhng bn c th s dng LINQ mt cch n gin sp xp cc yu ttoos bng nhng thuc tnh. y chng ta xem xt lm th no bn c th s dng phng php sp xp parameterless trn List v truy vn LINQ trong ngn ng lp trnh C#. V d v sp xp: y chng ta thy lm th no bn c th s dng cc phng thc sp xp trn List ca bn sp xp chui ca mnh t A-Z.Bn c th ch nh mt chc nng so snh hoc s dng cc t kha LINQ thay th.Chng trnh ny c 3 chui v sau chng ta sp xp chng theo th t ca bng ch ci. //chng trnh s dng phng thc sp xp using System; using System.Collections.Generic; class Program { static void Main() { List<string> list = new List<string>(); list.Add("tuna"); list.Add("velvetfish"); list.Add("angler"); list.Sort(); foreach (string value in list) { Console.WriteLine(value); } } }

Output

angler tuna velvetfish

2.Mng
Trc khi gii thiu v mng trong ngn ng C#,chng ta xt mt v d n gin v cch phn b v khi to mt mng s nguyn c 3 phn t. using System;

class Program { static void Main() { int[] values = new int[3]; values[0] = 5; values[1] = values[0] * 2; values[2] = values[1] * 2;

foreach (int value in values) { Console.WriteLine(value); } } }

Output

5 10 20

C mt cch khc cp pht mt mng trong C # l gn cho n cc gi tr. Bn c th s dng du ngoc nhn {} gn gi tr phn t trong mt dng. Chiu di ca mng c t ng xc nh khi bn bin dch chng trnh ca bn. using System;

class Program { static void Main() { // to mt mng c 3 phn t int[] array = { 10, 30, 50 };

foreach (int value in array) { Console.WriteLine(value); } } }

Output

10 30 50 i khi n rt hu ch trong vic xy dng vng lp thay v phi s dng foreach trn mng ca bn.Xy ra iu ny l bi v n cho php bn truy cp vo gi tr ch s (i) cng nh gi tr phn t trong mng. using System;

class Program { static void Main() {

// Create an array of three ints. int[] array = { 100, 300, 500 };

// Use for loop. for (int i = 0; i < array.Length; i++) { Console.WriteLine(array[i]); } } }

Output

100 300 500 Mng l khng ch c khai bo i vi cc loi gi tr int. Chng c th khai bo dng chui v cc tham chiu i tng khc .Mt iu th v,mt chui k t bn thn ca n khng c lu tr trong mng. Thay vo , ch l mt tham chiu n d liu chui trong mng. using System;

class Program { static void Main() { // khoi ta ova gan gia tri string[] array = new string[4]; array[0] = "DOT"; array[1] = "NET"; array[2] = "PERLS"; array[3] = 2010.ToString();

// xuat ket qua

foreach (string value in array) { Console.WriteLine(value); } } }

Output

DOT NET PERLS 2010 Lm th no bn c th truyn mt mng ti mt phng thc s dng?Chng trnh di y l v d truyn mt cch chnh xc ti mt mng s nguyn. Xin lu rng ton b ni dung ca mng khng c sao chp, thay vo , ch l mt tham chiu n mng c sao chp khi cc phng thc mi c a vo hng i using System;

class Program { static void Main() { //3 phan tu trong mang int[] array = { -5, -6, -7 }; // truyen mang toi Phuong thuc Console.WriteLine(Method(array)); }

static int Method(int[] array) { return array[0] * 2; } }

Output

-10 Cui cng bn c th gi mt mng t mt phng thc.Trong v d ny,chng ta c mt mng kiu string c 2 phn t v n c khi to trong phng thc Method().Sau khi gn gi tr cho cc phn t,sau chng ta tr v gi tr cho n.Trong phng thc Main,kt qu ca phng thc ny c in ra mn hnh. using System;

class Program { static void Main() { // xuat mang ra man hinh Console.WriteLine(string.Join(" ", Method())); }

static string[] Method() { string[] array = new string[2]; array[0] = "THANK"; array[1] = "YOU"; return array; } }

Output

THANK YOU Bn mun s dng mt mng 2D c cha bt k loi gi tr no trong chng trnh C # ca bn. Xt tng phn t vi mt vng lp for. Mng hai chiu l kh phn phi vi hn so vi mng mt chiu. y chng ta c mt s li khuyn v vic lm th no s dng cc mng 2D trong cc chng trnh bng ngn ng lp trnh C #.Mng 2D s dng mt hnh thc c php c bit.Chng chm hn cc phn t c ch s trong mng 1D.

using System;

class Program { static void Main() { // A. 2D array of strings. string[,] a = new string[,] { {"ant", "aunt"}, {"Sam", "Samantha"}, {"clozapine", "quetiapine"}, {"flomax", "volmax"}, {"toradol", "tramadol"} };

// B. Get the upper bound to loop. for (int i = 0; i <= a.GetUpperBound(0); i++) { string s1 = a[i, 0]; // ant, Sam, clozapine... string s2 = a[i, 1]; // aunt, Samantha, quetiapine... Console.WriteLine("{0}, {1}", s1, s2); } Console.WriteLine();

// C. Loop based on length. // ... Assumes each subarray is two elements long. for (int i = 0; i < a.Length / 2; i++) { string s1 = a[i, 0]; string s2 = a[i, 1]; Console.WriteLine("{0}, {1}", s1, s2);

} Console.WriteLine();

// D. Get both bounds. int bound0 = a.GetUpperBound(0); int bound1 = a.GetUpperBound(1); for (int i = 0; i <= bound0; i++) { for (int x = 0; x <= bound1; x++) { string s1 = a[i, x]; Console.WriteLine(s1); } Console.WriteLine(); } } }

Output

ant, aunt Sam, Samantha clozapine, quetiapine flomax, volmax toradol, tramadol

ant, aunt Sam, Samantha clozapine, quetiapine flomax, volmax toradol, tramadol

ant aunt

Sam Samantha

clozapine quetiapine

flomax volmax

toradol tramadol Bn c mt mng c sp xp v mun tm kim mt gi tr trong mng vi hiu qu cao. Mng cung cp mt phng thc BinarySearch tm kim mt cch nhanh chng v chnh xc c th xc nh v tr ca mt phn t trong mng, v bn cng c th cho bit lm th no so snh cc phn t trong mng. y chng ta xt mt v d v phng thc Array.BinarySearch . u tin, y chng ta thy lm th no bn c th s dng phng thc Array.BinarySearch trong chng trnh C # ca bn. Phng thc Array.BinarySearch c mt phin bn chp nhn mt tham s kiu, m bn c th ch nh trong du ngoc nhn. Tuy nhin, C # trnh bin dch s suy ra loi hnh ny cho bn, bn c th b qua nu m ngun c r rng hn cho bn theo cch .

using System;

class Program { static void Main() { // // Source array that is ordered ascending. //

string[] array = { "a", "e", "m", "n", "x", "z" }; // // Call versions of the BinarySearch method. // int index1 = Array.BinarySearch(array, "m"); int index2 = Array.BinarySearch<string>(array, "x"); int index3 = Array.BinarySearch<string>(array, "E", StringComparer.OrdinalIgnoreCase); // // Write results. // Console.WriteLine(index1); Console.WriteLine(index2); Console.WriteLine(index3); } }

Output

2 4 1

3.Sets
Tip theo ta tm hiu cu trc tp hp trong .NET Framework. HashSet l b cng c logic c s dng nhiu trong cc phng thc.Bn c th s dng cc phng thc nh Hp trn cc hashSets khc nhau cho chng trnh logic ca bn.Bn c th s dng Dictionary thay th nhng HashSet c th c th hin r rng,c th nu bn quen vi l thuyt tp hp.Ngoi ra SortedSet cng l mt cng c nh cy nh phn,nhng n cng cung cp cc kiu tp hp logic. C li ch no v hiu sut khi s dng HashSet thay v Dictionary khi bn cn thit lp cc chc nng n gin trong chng trnh?Trong ngn ng C#,mt dictionary c gi tr kiu bool v c th lm vic nh mt tp hp.Nu bn khng cn mt thit lp logic nng cao no,Dictonary c th thay th HashSet.

y chng ti kim tra mt HashSet(string) so vi mt Dictionary(tring,bool) nh th no.Chng ta thm mt vi chui nh m keys v nhn thy nu nhng keys tn ti.Sau vng lp u tin,khng c phn t mi c thm vo,do tiu chun ny ch yu kim tra hiu sut tit kim, V d: using System; using System.Collections.Generic; using System.Diagnostics;

class Program { const int _max = 10000000; static void Main() { var h = new HashSet<string>(StringComparer.Ordinal); var d = new Dictionary<string, bool>(StringComparer.Ordinal); var a = new string[] { "a", "b", "c", "d", "longer", "words", "also" };

var s1 = Stopwatch.StartNew(); for (int i = 0; i < _max; i++) { foreach (string s in a) { h.Add(s); h.Contains(s); } } s1.Stop(); var s2 = Stopwatch.StartNew(); for (int i = 0; i < _max; i++) { foreach (string s in a) {

d[s] = true; d.ContainsKey(s); } } s2.Stop(); Console.WriteLine(h.Count); Console.WriteLine(d.Count);

Console.WriteLine(((double)(s1.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns")); Console.WriteLine(((double)(s2.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns")); Console.Read(); } } Output

7 7 529.99 ns 517.05 ns Kt lun:Trong bi kim tra trn Dictionary(string,bool) c hiu sut tt hn mt cht so vi HashSet(string).Trong thc t,kim tra 2 cu trc trn,ta thy Dictionary c phn nhanh hn HashSet. Bn mun loi b cc mng trng lp hoc cc phn t ca mt mng bng cch s dng cc thut ton nhanh v khng b sai trn mt mng ln.Collection hashset thuc System.Collections.Generic trong ngn ng C# cung cp mt c php n gin cho s kt hp ca cc phn t trong tp hp,v iu ny c thc hin trong constructor.

V D: Ban u, y chng ta thy mt chng trnh c cha mt mng gc c cha nhiu chui lp.Mc tiu l loi b cc chui lp trong mng v ch c mt chui n duy nht.Chng trnh gi hm khi to HashSet t System.Collections.Generic bin i cc phn t ca mng thnh cu trc d liu tp hp.Phng thc ToArray chuyn i cc phn t t HashSet thnh mt mng mi. using System; using System.Collections.Generic;

using System.Linq; class Program { static void Main() { // u vo ca mng string[] array1 = { "cat", "dog", "cat", "leopard", "tiger", "cat" }; //Hin th mng ra mn hnh Console.WriteLine(string.Join(",", array1)); //S dng hm khi to hashset var hash = new HashSet<string>(array1); string[] array2 = hash.ToArray(); Console.WriteLine(string.Join(",", array2)); } }

Output

cat,dog,cat,leopard,tiger,cat cat,dog,leopard,tiger
Mng u vo v cc phn t trng lp. Trong chng trnh, bn c th nhn thy mt mng u vo c su chui v ch c bn chui n, chui "cat" c lp i lp li ba ln. iu ny c th khng c mong mun trong mt s chng trnh v cc thut ton.Cc hm khi to HashSet c s dng loi b cc phn t khng phi duy nht trong tp hp. Bn c nhiu phn t m bn cn lu tr, v bn mun lu tr chng trong mt trt t c sp xp sn v cng c th loi b tt c cc cu trc d liu trng lp. Kiu SortedSet, l mt phn ca namespace System.Collections.Generic trong ngn ng C # v .NET Framework., cung cp chc nng ny. Thng qua cc v d v cc gii thch, chng ta tm ra cch s dng cc loi SortedSet bng ngn ng ny. u tin, chng trnh ny to mi mt SortedSet trng. Sau , n cho bit thm bn phn t thit lp vi Add, tip theo, n loi b mt phn t vi lnh remove. Cui cng, n s dng foreach xy dngvng lp duyt qua tt c cc phn t.

using System; using System.Collections.Generic; class Program { static void Main() {

SortedSet<string> set = new SortedSet<string>(); // them 4 phan tu set.Add("perls"); set.Add("net"); set.Add("dot"); set.Add("sam"); // Remove mot phan tu. set.Remove("sam"); // in cac phan tu ra man hinh. foreach (string val in set) //cac phan tu da duoc sap xep { Console.WriteLine(val); } } }
Output

dot net perls Tip theo ta tim hiu cch to SortedSet t List.Thng thng bn c th to ra mt v d v SortedSet t cc collection khc nhau nh mng hoc List.Bn c th lm iu ny bng cch gi hm khi to SortedSet v bn c th truyn collection ban u tham chiu ti n.SortedSet s cha tt c cc phn t. Lu trong v d di ta thy cc phn t trng lp ch xut hin mt ln trong SortedSet. using System; using System.Collections.Generic; class Program { static void Main() { // tao danh sach voi cac phan tu List<string> list = new List<string>(); list.Add("sam"); list.Add("allen"); list.Add("perls"); list.Add("perls"); //khoi tao SortedSet SortedSet<string> set = new SortedSet<string>(list); //hien thi noi dung len man hinh foreach (string val in set) { Console.WriteLine(val);

} } } Output

allen perls sam

i khi bn cn xa tt c cc phn t t SortedSet ph hp vi mt iu kin no .Bn c th gi phng thc RemoveWhere.Trong v d di,bn chui c thm vo SortedSet bt u bng ch s.Mc tiu xa nhng chui bt u bng ch s. using System; using System.Collections.Generic;

class Program { static void Main() { // Tao Sortedset. SortedSet<string> set = new SortedSet<string>(); set.Add("sam"); set.Add("sally"); set.Add("sandra"); set.Add("steve"); set.Add("mark"); set.Add("mark");

//Huy tat ca cac phan tu trong chuoi bat dau bang"s". set.RemoveWhere(element => element.StartsWith("s"));

//Hien thi. foreach (string val in set) {

Console.WriteLine(val); } } } Output

mark Vi collection trong . NET Framework., bn c th s dng thuc tnh Count v phng thc Clear () trn SortedSet.Sau khi phng thc Clear() c gi th thuc tnh Count s tr v gi tr 0. using System; using System.Collections.Generic;

class Program { static void Main() { SortedSet<string> set = new SortedSet<string>(); set.Add("a"); set.Add("z"); set.Add("a"); Console.WriteLine(set.Count); set.Clear(); Console.WriteLine(set.Count); } }

Output

2 0

You might also like