chap 1.1.1 群集
群集是一种结构化的数据类型。它存储数据,并提供数据的添加、删除、更新操作,以及对群集的不同属性值的设置与返回操作。
群集可以分为两类:线性的和非线性的。线性群集是一张元素列表,表中元素顺次相连,线性群集中的元素通常由位置来决定次序。
非线性群集所包含的元素是没有位置次序之分。
chap5.1.1 堆栈的操作
堆栈的最基本的两种操作就是向堆栈内添加和删除数据项。push(进栈)和Pop(出栈)。Pop操作会返回栈顶的数据项,但同时会将栈顶的数据项移除。所有还有Peek(取数)操作。
chap5.2 STACK类
Stack类是Icollection接口的一个实现。它代表一个LIFO(Last In First Out 后进先出法)群集或一个堆栈。
chap 5.3.3 queue(线性表)类
又称为队列,是一种先进先出(FIFO)的数据结构。
堆栈是一个LIFO(后进先出)群集
Queue myQueue=new
Queue(10);//队列的长度,当队列的长度已满后,即会自动增加一倍的长度。
Queue myQueue=new Queue(10,3);//第二个参数是为队列长度已满后增加长度的倍数,当前增加的倍数为三倍。。
Queue
[] qs =
new
Queue
[10];
Queue
<
int
> qss =
new
Queue
<
int
> { };
qs[0].Dequeue();//移除并返回Queue开始处的对象。
chap 5 小结
- 一、堆栈的最基本操作就是向堆栈内添加数据和移除数据。Push(进栈)和Pop(出栈)。
- 二、Peek()方法能让人们不取出数据而将栈顶(栈顶)的数据项取出。如果没有这种方法就只能将值移除后才知道它的值。
- 三、堆栈的容量当装满后机会自动扩充大小,以当前大小的一倍扩大(不同情况下扩充大小倍数不同)
- 四、队列是一种把数据从表的末端放入并在表的前端移除的数据结构。队列会按照数据项出现的从顺序来存储它。队列是先进先出(FIFO)的数据结构的实例。
chap 8 小结
- 后台使用正则表达式:Regex类。需要引用
System.Text.RegularExpressions;
string
s1 =
"hello word"
;
Match
match =
null
;
Regex
myRegex =
new
Regex
(
"wo"
);
match = myRegex.Match(s1);
if
(match.Success)
{
Console
.WriteLine(match.Value +
"\t"
+ match.Index);
}
创建一个新的Regex对象是需要传入一个匹配的正则表达式传递给构造器。在通过Match的Success方法判断匹配结果。
- Match类只能存储一个匹配值。当存在多个匹配值的时候,可以存储到MatchCollection对象中。
using System;using System.Text.RegularExpressions;class chapter8{static void Main(){Regex reg= new Regex("the");string str1 = "the quick brown fox jumped over the lazy dog";//MatchCollection 对象,可存储多个匹配结果MatchCollection matchSet;matchSet= reg.Matches(str1);if(matchSet.Count> 0)foreach(Match aMatch in matchSet)Console.WriteLine("found a match at: " + aMatch.Index);Console.Read();}}
在编写正则表达式时添加一些数量词的匹配,诸如“精确匹配两次、匹配一次或者多次”。
string[]
words=
new
string[]
{"bad",
"boy",
"baaad","bear",
"bend"};
if(Regex.IsMatch(word,
"ba+"))
该值将会匹配到bad和baaad,意思是以“b”开头并且包含一个或者多个“a”的字符串。
一、“?”是一种匹配一次或者零次的数量词,如果将之前的匹配结果更换为“ba?d”,那么有且只有一个匹配结果即为“bad”。
二、
还有的方法即为有限数量的匹配,{n}或者{n,m}。该情况同样适用于[a-z]。
三、“.”则匹配的是每一个字符(可拿字母数组作为测试),如果单独匹配“。”则匹配的所有位置的值,在当前情况下即可增加约束条件,匹配条件为“t.e”,即会匹配“the”,该匹配条件不会匹配“thhhe”类似的值。
chap 9 小结
字典:
DictionaryBase
类和
SortedList
类
字典是一种把数据作为键值对来存储的数据结构,存储在字典中的键值对实际上是作为DIctionaryEntry对象来存储的。
DictionaryEntry
结构提供了两个域,一个用于关键字而另一个用于值。在这个结构中所要关注的只是
Key
属性和
Value
属性这两个属性(或方法)
//
Item方法用来回给定特殊关键字的值。这里将关键字传递给InnerHashTable对象相应的Item方法。
public
string
Item(
string
name)
{
return
base
.InnerHashtable[name].ToString();
}
通用的
KeyValuePair类
C#
语言提供了一种小类用来允许创建象字典式的对象,
此对象是基于关键字来存储数据的。
这种类被称为是
KeyVal
uePair
类。
由于每个对象只能持有一个关键字和一个值,
所以它的使用是受到限制的。
KeyValuePair
<
string
,
int
>[] keys =
new
KeyValuePair
<
string
,
int
>[10];
keys[0] =
new
KeyValuePair
<
string
,
int
>(
"Tom"
, 1);
keys[1] =
new
KeyValuePair
<
string
,
int
>(
"Jack"
, 2);
//当前KeyValuePair<string, int>数组中有十个位置,但参数没有占满。输出时会将其他位置以空或者以0的方式显示。(无关循环的事情)
foreach
(
KeyValuePair
<
string
,
int
> item
in
keys)
{
Console
.WriteLine(item.Key +
"\t"
+ item.Value);
}
sortList类
SortList类是按照分类顺序基于键值来存储键值对。当存储的关键字很重要时可以使用这种数据结构。
SortedList
<
string
,
int
> sorts =
new
SortedList
<
string
,
int
>();
sorts.Add(
"name1"
, 1);
sorts.Add(
"name7"
, 7);
sorts.Add(
"name4"
, 4);
foreach
(
object
i
in
sorts.Keys)
{
Console
.WriteLine(
"Name:"
+i);
}
Console
.WriteLine();
//输出name4对于的值
Console
.WriteLine(
int
.Parse(sorts[
"name4"
].ToString()));
Console
.WriteLine();
//通过找到的值可以操作(还有IndexOfKey方法获取到键值)
int
index1 = sorts.IndexOfValue(
int
.Parse(sorts[
"name4"
].ToString()));
Console
.WriteLine(index1);
Console
.WriteLine();
Console
.Read();