1 9/27/05CS360 Windows Programming Strings, Regex, Web Response.
1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.
-
Upload
phoebe-freeman -
Category
Documents
-
view
213 -
download
0
Transcript of 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.
![Page 1: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/1.jpg)
9/22/05 CS360 Windows Programming 1
Arrays, Collections, Hash Tables, Strings
![Page 2: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/2.jpg)
9/22/05 CS360 Windows Programming 2
Last Time
We began looking at GUI Programming
Completed talking about exception handling
![Page 3: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/3.jpg)
9/22/05 CS360 Windows Programming 3
Arrays
Arrays are contiguous bytes of memory that store data elements that are accessed using an index into the array
![Page 4: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/4.jpg)
9/22/05 CS360 Windows Programming 4
Arrays Single dimensionint[] myInts = new int[20];. . .Console.WriteLine(myInts[i]);
Multidimensionstring[,] myStrings = new string[5,6];double[,,] myDoubles = new double[3,8,5];. . .Console.WriteLine(myDoubles[i,j,k]);
JaggedPoint[][] myPolygons = new Point[3][];myPolygons[0] = new Point[10];myPolygons[1] = new Point[20];myPolygons[2] = new Point[30];. . .for (int x = 0; x < myPolygons[1].Length; x++) Console.WriteLine(myPolygons[1][x]);
![Page 5: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/5.jpg)
9/22/05 CS360 Windows Programming 5
Jagged Arrays
Each element in the array is itself an array
Student 1
Student 2
Student 3
Student 25
Score 1 Score 2 Score 3
Score 1 Score 2 Score 3 Score 4 Score 5
Score 1 Score 2
Score 1 Score 2 Score 3 Score 4 Score 5 Score 6
![Page 6: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/6.jpg)
9/22/05 CS360 Windows Programming 6
foreach
Point[][] myPolygons = new Point[3][];
myPolygons[0] = new Point[10];
myPolygons[1] = new Point[20];
myPolygons[2] = new Point[30];
for (int x = 0;
x < myPolygons[1].Length; x++)
Console.WriteLine(myPolygons[1][x]);
foreach (Point p in myPolygons[1])
Console.WriteLine(p);Note: inside a foreach loop we haveread only access to the array elements.
![Page 7: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/7.jpg)
9/22/05 CS360 Windows Programming 7
foreach
foreach statements can be used to iterate over the elements in a collection
Arrays in C# support the foreach statement
The syntax for foreach is the foreach keyword followed by parenthesis ando Type of element in the collection
o Identifier name for element in collection
o The keyword in
o The identifier of the collection
![Page 8: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/8.jpg)
9/22/05 CS360 Windows Programming 8
Another Example
int [] MyArray;
MyArray = new int [5];
MyArray[0] = 0;
MyArray[1] = 1;
MyArray[2] = 2;
MyArray[3] = 3;
MyArray[4] = 4;
foreach(int ArrayElement in MyArray)
System.Console.WriteLine(ArrayElement);
![Page 9: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/9.jpg)
9/22/05 CS360 Windows Programming 9
Declaring Arrays
int[] myInts;o Creates a variable that can point to an array
myInts = new int[100];o Creates an array of 100 ints.o These ints are initialized to 0, and stored, unboxed, in a
memory block on the managed heap.
Control myControls;o Creates a variable that can point to an array
myControls = new Control[100];o Creates an array of Control references, initialized to null.
Since Control is a reference type, creating the array creates references—the actual objects are not created.
![Page 10: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/10.jpg)
9/22/05 CS360 Windows Programming 10
Array Initialization
Single dimensiono int[] myInts = new int[3] {1, 2, 3};
o int[] myInts = new int[] {1, 2, 3};
o int[] myInts = {1, 2, 3};
Multidimensionalo int[,] MyArray = {{0, 1, 2}, {3, 4, 5}};
![Page 11: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/11.jpg)
9/22/05 CS360 Windows Programming 11
Arrays are Derived from System.Array
int[] myInts = new int[3] {1, 2, 3}; double[,,] myDoubles = new double[3,8,5]; Properties
o myInts.Length is 3o myInts.Rank is 1o myDoubles.Length is 120o myDoubles.Rank is 3o myDoubles.GetLength(1) is 8
Static Methodso Array.Sort(myInts);o Array.Sort(keys, items);o Array.Reverse(myInts);o Array.Clear(myInts);o int i = Array.IndexOf(myInts, 17);
![Page 12: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/12.jpg)
9/22/05 CS360 Windows Programming 12
Collections
A useful namespace to know in the FCL is System.Collections
It contains classes that serve as containers for groups of data
Examples of the classes include:o ArrayList
o BitArray
o Hashtable
o Queue
o Stack
![Page 13: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/13.jpg)
9/22/05 CS360 Windows Programming 13
Collections
Collections are Weakly Typedo They can store any kind of data
Primitive types Any reference types
o Could create an array of your own objects
Need to do a lot of type casting to access and use the data in the collections
Future versions of .NET will support genericso Equivalent to C++ templates
![Page 14: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/14.jpg)
9/22/05 CS360 Windows Programming 14
Hash Tables
Hash tables are a form of storing data for easy and efficient retrieval
Items are stored in a table along with with their keyso Key/value pairs
Key’s are hashed to determine location in table
![Page 15: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/15.jpg)
9/22/05 CS360 Windows Programming 15
Hash Tables
Hash table items are stored in System.Collections.DictionaryEntry objects
Methods in Hashtable include:o Add
o Remove
o Clear
o ContainsKey
o ContainsValue
![Page 16: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/16.jpg)
9/22/05 CS360 Windows Programming 16
Exampleusing System.Threading;using System.Windows.Forms;using System.Collections; class DaysOfTheWeek{ public static void Main() { Hashtable days = new Hashtable(); days.Add( "Sunday", "األحد" ); days.Add( "Monday", "االثنين" ); days.Add( "Tuesday", "الثالثاء" ); days.Add( "Wednesday", "األربعاء" ); days.Add( "Thursday", "الخميس" ); days.Add( "Friday", "الجمعة" );
days["Saturday"] = "السبت";
string word = ""; foreach( DictionaryEntry entry in days ) word += entry.Key + " : " + entry.Value + "\n\n";
MessageBox.Show( word ); }}
![Page 17: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/17.jpg)
9/22/05 CS360 Windows Programming 17
Resizable Arrays
The arrays that we have seen so far are not resizable
System.Collections.ArrayList encapsulates dynamic arrays
Methods supported by ArrayList include:o Add
o Clear
o Clone (creates a shallow copy)
o Remove
o Sort
![Page 18: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/18.jpg)
9/22/05 CS360 Windows Programming 18
Examples
Which is more efficient? Why?
ArrayList list = new ArrayList();
for( int i = 0; i < 100000; i++ )
list.Add( i );
ArrayList list = new ArrayList(100000);
for( int i = 0; i < 100000; i++ )
list.Add( i );
![Page 19: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/19.jpg)
9/22/05 CS360 Windows Programming 19
Examples
To retrieve an item from an ArrayListo int i = (int) list[0];
o Why do we use (int)
To assign a value to an element in the arrayo list[0] = 333;
![Page 20: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/20.jpg)
9/22/05 CS360 Windows Programming 20
Example
We have two options for looping through all the elements in the arrayo Count property
o foreach
for( int i = 0; i < list.Count; i++ )
Console.WriteLine( list[i] );
foreach( int i in list )
Console.WriteLine( i );
![Page 21: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/21.jpg)
9/22/05 CS360 Windows Programming 21
More ArrayList Methods
Removing items from an array automatically shifts the items in the array up
Memory is not released as soon as an item is removed
To downsize an ArrayList to automatically fit the contents use TrimToSize method
![Page 22: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/22.jpg)
9/22/05 CS360 Windows Programming 22
Example
Let’s look at the example in Figure 3.3 on pages 72-74 of the book
![Page 23: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/23.jpg)
9/22/05 CS360 Windows Programming 23
Strings
Another way of finding the classes available through the .NET FCL is the Object Browsero View menu, then Object Browser
You will find the classes under mscorlib
String is under mscorlib->Systemo It’s in the System namespace
![Page 24: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/24.jpg)
9/22/05 CS360 Windows Programming 24
Strings
The methods by the String class include:o ToLower
o ToUpper
o Replace
o Length
o IndexOf
![Page 25: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/25.jpg)
9/22/05 CS360 Windows Programming 25
Example
string theString = "Programming Microsoft .NET";
Console.WriteLine("default: \t {0}", theString);
Console.WriteLine("lowercase: \t {0}", theString.ToLower());
Console.WriteLine("uppercase: \t {0}", theString.ToUpper());
Console.WriteLine("replace: \t {0}",
theString.Replace(".", "dot "));
Console.WriteLine("length: \t {0}", theString.Length);
Console.WriteLine("\"Microsoft\" occurs at character {0}",
theString.IndexOf("Microsoft"));
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("Please press enter key to quit");
Console.ReadLine();
![Page 26: 1 9/22/05CS360 Windows Programming Arrays, Collections, Hash Tables, Strings.](https://reader036.fdocuments.us/reader036/viewer/2022070415/5697c02b1a28abf838cd874f/html5/thumbnails/26.jpg)
9/22/05 CS360 Windows Programming 26
Summary
Arrays
Collectionso Hash Tables
o Resizable Arrays
o Strings
Completed pages 66 - 74