集合和泛型
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{ List<string> names = new List<string>(); names.Add("Michael Patten"); names.Add("Simon Pearson"); names.Add("David Pelton"); names.Add("Thomas Andersen");
使用专用集合 System.Collections.Specialized
专用集合是预定义集合,用于特殊或专用性很强的用途。
想要使用与 Hashtable 类相似的键/值对来实现一个小型集 合以存放最多 10 个元素。
想要实现类型安全的 ArrayList来存放字符串值,并为其提 供适当的枚举数。
第3章 集合和泛型
集合和集合接口 使用主要集合类型 使用泛型集合 使用专用集合 使用集合基类 小结 实验 习题
使用主要集合类型
使用迭代器循环访问类的成员 根据键/值对和比较器访问引用类型 Comparer 类 Hashable类 (1)Sortedlist类 (2)BitArray 类
通过迭代器循环访问类的成员
int count = numbers.Count; for (int i = 0; i < count; i++) { Console.WriteLine("Popping '{0}'", numbers.Pop()); } }
泛型Queue 类
static void Main(string[] args) { Queue<string> numbers = new Queue<string>();
根据键/值对和比较器访问引用类型
Comparer 类
Comparer 类比较两个对象并检测其中一个是 大于、小于还是等于 另一个。
Hashable 类
Hashtable 类表示一个键(Key)/值(Value)对的集合,根据指定的 键的哈希代码来组织这些名称/值对。
(1)Sortedlist类
SortedList 类表示一个键/值对的集合 。
要根据键/值对或使用索引位置来访问集合的元素。
Sortedlist
public static void Main()
{ SortedList slColors = new SortedList(); slColors.Add("forecolor", "black"); slColors.Add("backcolor", "white"); slColors.Add("errorcolor", "red"); slColors.Add("infocolor", "blue"); foreach (DictionaryEntry de in slColors) { Console.WriteLine(de.Key + " = " + de.Value);
}
}
Hashable
public class ContractorTest
{ public static void Main()
{
Hashtable currencies = new Hashtable(); currencies.Add("US", "Dollar"); currencies.Add("Japan", "Yen");
泛型 Stack 类的功能和非泛型 Stack 类相似,只不过泛型 Stack 包含特定数据类型的元素。 泛型 Queue 类与非泛型 Queue 类相同,只不过泛型 Queue 包含 特定数据类型的元素。
泛型Stack 类
static void Main(string[] args) { Stack<string> numbers = new Stack<string>();
myBits.Set(1, false);
myBits.Set(2, true); myBits.Length = 5; myBits.Set(4, true);
Console.WriteLine("3rd bit: " + myBits.Get(2));
foreach (bool b in myBits)
}
}
集合接口
各种集合接口具有非泛型和泛型的版本。非泛型版本位于 System.Collections 命名空间,泛型版本位于 System.Collections. Generic 命名空间。
IComparable ICollection IComparer IEqualityComparer IDictionary IEnumerable IEnumerator
使用泛型 List 类型创建类型安全的集合
泛型 List 类可看作 ArrayList 类的泛型版本。
使用泛型 List 类型,可以创建提供 ArrayList 行为的泛型 列表 。
使用 List.Enumerator 结构可以枚举泛型列表的元素。
使用泛型List类型创建类型安全的集合
static void Main(string[] args)
numbers.Push("one");
numbers.Push("two"); numbers.Push("three"); numbers.Push("four"); numbers.Push("five");
Console.WriteLine("Peeking '{0}'", numbers.Peek());
.NET Framework 的内置集合非常有用。
C# 通过一个名为迭代器的新的语言构造简化了过程迭代功能。
通过使用 yield 语句来应用迭代器。迭代器行为只在 C# 中可用。
在 Visual Basic 中,必须使用 IEnumerator 接口来循环访问类的成员。
通过迭代器循环访问类的成员
public class Contractor { private string name; private int rate; public Contractor(string Name, int Rate) { this.name = Name; this.rate = Rate; } public override string ToString() { return string.Format("{0} [${1:.00}]", this.name, this.rate); } } public class ContractorTest { public static void Main() { Contractors Items = new Contractors(); Items.Add("Thomas Andersen", 12); Items.Add("Nancy Anderson", 65); Items.Add("Sidney Higa", 48); foreach (Contractor c in Items) Console.WriteLine(c); Console.ReadLine(); } } public class Contractors : IEnumerable { private ArrayList items = new ArrayList(); public IEnumerator GetEnumerator() { for (int index = 0; index < this.Count; index++) { yield return this[index]; } } public int Add(string Name, int Rate) { return items.Add(new Contractor(Name, Rate)); } public Contractor this[int Index] { get { return (Contractor)items[Index]; } } public int Count { get { return items.Count; } } }
集合
集合是指通过高度结构化的方式存储任意对象的类。
集合接口
每个集合接口中都定义了不同的行为 。
ArrayList类型集合
static void Main(string[] args)
{ ArrayList countries = new ArrayList(); countries.Add("Belgium"); countries.Add("China"); countries.Add("France"); countries.Add("New Zealand"); foreach (string country in countries) { Console.WriteLine(country);
{
Console.WriteLine(b); }
第3章 集合和泛型
集合和集合接口 使用主要集合类型 使用泛型集合 使用专用集合 使用集合基类 小结 实验 习题
使用泛型集合
使用泛型 List 类型创建类型安全的集合 使用泛型Stack集合和Queue集合
(1)泛型 Stack 类 (2)泛型 Queue 类
foreach (string str in names)
{ Console.WriteLine(str);
}
}
使用泛型Stack集合和Queue集合
堆栈和队列提供 FIFO 或 LIFO 行为。 1. 2. 使用泛型 Stack 类以实现 LIFO。 使用泛型 Queue 类以实现 FIFO 。
numbers.Enqueue("one");
numbers.Enqueue("two"); numbers.Enqueue("three"); numbers.Enqueue("four"); numbers.Enqueue("five");
Console.WriteLine("Peeking '{0}'", numbers.Peek());
(2)BitArray 类
BitArray 类实现一个位结构,它表示一个二进制位(1 和 0)的集合 。
wk.baidu.com
Comparer类比较两个字符串
public static void Main() {
string str1 = "visual studio .net";
string str2 = "VISUAL STUDIO .NET"; string str3 = "visual studio .net"; Console.WriteLine("str1 and str2 : " + Comparer.Default.Compare(str1, str2)); Console.WriteLine("str1 and str3 : " + Comparer.Default.Compare(str1, str3)); Console.WriteLine("str2 and str3 : " + Comparer.Default.Compare(str2, str3)); }
currencies.Add("France", "Euro");
Console.Write("US Currency: {0}", currencies["US"]);
}
}
BitArray
BitArray myBits = new BitArray(3); myBits.Set(0, true);
int count = numbers.Count; for (int i = 0; i < count; i++) { Console.WriteLine("Dequeuing '{0}'", numbers.Dequeue()); } }
第3章 集合和泛型
集合和集合接口 使用主要集合类型 使用泛型集合 使用专用集合 使用集合基类 小结 实验 习题
第3章 集合和泛型
目标
本章学习目标: 了解集合和集合接口的用途 了解泛型列表类型、集合、字典类型和链表类型 了解专用字集合类 了解集合基类和字典基础类型
第3章 集合和泛型
集合和集合接口 使用主要集合类型 使用泛型集合 使用专用集合 使用集合基类 小结 实验 习题
集合和集合接口 System.Collections
使用专用集合 System.Collections.Specialized
专用集合是预定义集合,用于特殊或专用性很强的用途。
想要使用与 Hashtable 类相似的键/值对来实现一个小型集 合以存放最多 10 个元素。
想要实现类型安全的 ArrayList来存放字符串值,并为其提 供适当的枚举数。
第3章 集合和泛型
集合和集合接口 使用主要集合类型 使用泛型集合 使用专用集合 使用集合基类 小结 实验 习题
使用主要集合类型
使用迭代器循环访问类的成员 根据键/值对和比较器访问引用类型 Comparer 类 Hashable类 (1)Sortedlist类 (2)BitArray 类
通过迭代器循环访问类的成员
int count = numbers.Count; for (int i = 0; i < count; i++) { Console.WriteLine("Popping '{0}'", numbers.Pop()); } }
泛型Queue 类
static void Main(string[] args) { Queue<string> numbers = new Queue<string>();
根据键/值对和比较器访问引用类型
Comparer 类
Comparer 类比较两个对象并检测其中一个是 大于、小于还是等于 另一个。
Hashable 类
Hashtable 类表示一个键(Key)/值(Value)对的集合,根据指定的 键的哈希代码来组织这些名称/值对。
(1)Sortedlist类
SortedList 类表示一个键/值对的集合 。
要根据键/值对或使用索引位置来访问集合的元素。
Sortedlist
public static void Main()
{ SortedList slColors = new SortedList(); slColors.Add("forecolor", "black"); slColors.Add("backcolor", "white"); slColors.Add("errorcolor", "red"); slColors.Add("infocolor", "blue"); foreach (DictionaryEntry de in slColors) { Console.WriteLine(de.Key + " = " + de.Value);
}
}
Hashable
public class ContractorTest
{ public static void Main()
{
Hashtable currencies = new Hashtable(); currencies.Add("US", "Dollar"); currencies.Add("Japan", "Yen");
泛型 Stack 类的功能和非泛型 Stack 类相似,只不过泛型 Stack 包含特定数据类型的元素。 泛型 Queue 类与非泛型 Queue 类相同,只不过泛型 Queue 包含 特定数据类型的元素。
泛型Stack 类
static void Main(string[] args) { Stack<string> numbers = new Stack<string>();
myBits.Set(1, false);
myBits.Set(2, true); myBits.Length = 5; myBits.Set(4, true);
Console.WriteLine("3rd bit: " + myBits.Get(2));
foreach (bool b in myBits)
}
}
集合接口
各种集合接口具有非泛型和泛型的版本。非泛型版本位于 System.Collections 命名空间,泛型版本位于 System.Collections. Generic 命名空间。
IComparable ICollection IComparer IEqualityComparer IDictionary IEnumerable IEnumerator
使用泛型 List 类型创建类型安全的集合
泛型 List 类可看作 ArrayList 类的泛型版本。
使用泛型 List 类型,可以创建提供 ArrayList 行为的泛型 列表 。
使用 List.Enumerator 结构可以枚举泛型列表的元素。
使用泛型List类型创建类型安全的集合
static void Main(string[] args)
numbers.Push("one");
numbers.Push("two"); numbers.Push("three"); numbers.Push("four"); numbers.Push("five");
Console.WriteLine("Peeking '{0}'", numbers.Peek());
.NET Framework 的内置集合非常有用。
C# 通过一个名为迭代器的新的语言构造简化了过程迭代功能。
通过使用 yield 语句来应用迭代器。迭代器行为只在 C# 中可用。
在 Visual Basic 中,必须使用 IEnumerator 接口来循环访问类的成员。
通过迭代器循环访问类的成员
public class Contractor { private string name; private int rate; public Contractor(string Name, int Rate) { this.name = Name; this.rate = Rate; } public override string ToString() { return string.Format("{0} [${1:.00}]", this.name, this.rate); } } public class ContractorTest { public static void Main() { Contractors Items = new Contractors(); Items.Add("Thomas Andersen", 12); Items.Add("Nancy Anderson", 65); Items.Add("Sidney Higa", 48); foreach (Contractor c in Items) Console.WriteLine(c); Console.ReadLine(); } } public class Contractors : IEnumerable { private ArrayList items = new ArrayList(); public IEnumerator GetEnumerator() { for (int index = 0; index < this.Count; index++) { yield return this[index]; } } public int Add(string Name, int Rate) { return items.Add(new Contractor(Name, Rate)); } public Contractor this[int Index] { get { return (Contractor)items[Index]; } } public int Count { get { return items.Count; } } }
集合
集合是指通过高度结构化的方式存储任意对象的类。
集合接口
每个集合接口中都定义了不同的行为 。
ArrayList类型集合
static void Main(string[] args)
{ ArrayList countries = new ArrayList(); countries.Add("Belgium"); countries.Add("China"); countries.Add("France"); countries.Add("New Zealand"); foreach (string country in countries) { Console.WriteLine(country);
{
Console.WriteLine(b); }
第3章 集合和泛型
集合和集合接口 使用主要集合类型 使用泛型集合 使用专用集合 使用集合基类 小结 实验 习题
使用泛型集合
使用泛型 List 类型创建类型安全的集合 使用泛型Stack集合和Queue集合
(1)泛型 Stack 类 (2)泛型 Queue 类
foreach (string str in names)
{ Console.WriteLine(str);
}
}
使用泛型Stack集合和Queue集合
堆栈和队列提供 FIFO 或 LIFO 行为。 1. 2. 使用泛型 Stack 类以实现 LIFO。 使用泛型 Queue 类以实现 FIFO 。
numbers.Enqueue("one");
numbers.Enqueue("two"); numbers.Enqueue("three"); numbers.Enqueue("four"); numbers.Enqueue("five");
Console.WriteLine("Peeking '{0}'", numbers.Peek());
(2)BitArray 类
BitArray 类实现一个位结构,它表示一个二进制位(1 和 0)的集合 。
wk.baidu.com
Comparer类比较两个字符串
public static void Main() {
string str1 = "visual studio .net";
string str2 = "VISUAL STUDIO .NET"; string str3 = "visual studio .net"; Console.WriteLine("str1 and str2 : " + Comparer.Default.Compare(str1, str2)); Console.WriteLine("str1 and str3 : " + Comparer.Default.Compare(str1, str3)); Console.WriteLine("str2 and str3 : " + Comparer.Default.Compare(str2, str3)); }
currencies.Add("France", "Euro");
Console.Write("US Currency: {0}", currencies["US"]);
}
}
BitArray
BitArray myBits = new BitArray(3); myBits.Set(0, true);
int count = numbers.Count; for (int i = 0; i < count; i++) { Console.WriteLine("Dequeuing '{0}'", numbers.Dequeue()); } }
第3章 集合和泛型
集合和集合接口 使用主要集合类型 使用泛型集合 使用专用集合 使用集合基类 小结 实验 习题
第3章 集合和泛型
目标
本章学习目标: 了解集合和集合接口的用途 了解泛型列表类型、集合、字典类型和链表类型 了解专用字集合类 了解集合基类和字典基础类型
第3章 集合和泛型
集合和集合接口 使用主要集合类型 使用泛型集合 使用专用集合 使用集合基类 小结 实验 习题
集合和集合接口 System.Collections