01.IList<>和IDictionary<>

集合_升序


集合_数组_02


集合_升序_03


集合_初始化_04

02.Array / List / Dictionary之相互转换

string[] testAarray =new string[]{"array01", "array02", "array03", "array04", "array05" };
List<string> testList=new List<string>() { "list01", "list02", "list03", "list04", "list05" };
Dictionary<int,string> testDic=new Dictionary<int, string>() {{1,"dictionary01"}, { 2, "dictionary02" }, { 3, "dictionary03" } };


string[] copyArray = new string[6];
//字符串复制 参数 01.源数组 02.sourceIndex 此实例中的字符位置
testAarray.CopyTo(copyArray,1);
foreach (var item in copyArray)
{
WriteLine(item);
}

集合_初始化_05

//数组转List
List<string> arrayToList=new List<string>(testAarray);
foreach (var item in arrayToList)
{
WriteLine(item);
}

集合_数组_06

//数组转字典

Dictionary<int, string> arrayToDoc =
testAarray.ToDictionary(arrayItem => System.Array.IndexOf(testAarray, arrayItem),
arrayItem => arrayItem);
foreach (var item in arrayToDoc)
{
WriteLine(item);
}
List<string> testList = new List<string>() { "list01", "list02", "list03", "list04", "list05" };

//list转数组
List<string> copyList=new List<string>(testList);
string[] listToArray = copyList.ToArray();
//List复制到Array
//调用与Aarray.CopyTo相同,实现的功能貌似和List.ToArray()一样
string[] listCopyToArray=new string[5];
copyList.CopyTo(listCopyToArray,0);
Dictionary<int,string> testDic=new Dictionary<int, string>() {{1,"dictionary01"}, { 2, "dictionary02" }, { 3, "dictionary03" } };
//Dictionary复制
Dictionary<int, string> copyDic = new Dictionary<int, string>(testDic);
//Dictionary转Array
int[] dictionaryKeyToArray = testDic.Keys.ToArray<int>();
string[] dictionaryToArray = testDic.Values.ToArray<string>();
//Dictionary转List
List<int> dictionaryKeyToList = testDic.Keys.ToList<int>();
List<string> dictionaryToList = testDic.Values.ToList<string>();

03.list

集合_初始化_07


升序和降序

List<int> list=new List<int>();
list.Add(2);
list.Add(3);
list.Add(6);
list.Add(5);
list.Add(1);
list.Add(8);
list.Sort(); //升序排序
foreach (var item in list)
{
WriteLine(item);
}
WriteLine();
list.Reverse();// 反转顺序
foreach (var item in list)
{
WriteLine(item);
}

集合_升序_08


移除元素

集合_初始化_09

list.Remove(2);//移除某个元素
list.RemoveAt(2);//移除指定索引位置的元素

搜索list

集合_数组_10

List<int> list=new List<int>();
list.Add(2);
list.Add(3);
list.Add(6);
list.Add(5);
list.Add(1);
list.Add(8);
list.Add(6);
//01.是否包含某个元素
bool contains=list.Contains(2);
WriteLine(contains); //true

//02.返回某个元素的索引位置 如果有相同的返回第一个
int index =list.IndexOf(6);
WriteLine(index);//2

//03.返回某个元素的索引位置 如果有相同的返回最后一个索引
int lastIndex = list.LastIndexOf(6);
WriteLine(lastIndex);//6

//04.
list.Sort();
int binaryIndex= list.BinarySearch(8);

集合_数组_11


List<int> result=list.FindAll((int value) => (value % 2) == 0);

foreach (var item in result)
{
WriteLine(item); // 2 6 8 6
}


int items=list.Find((value) => value == 8);
WriteLine(items);//8

集合_初始化_12


4. Dictionary

集合_升序_13


初始化

集合_初始化_14


集合_升序_15

//01.是否包含键或值
WriteLine(dictionary.ContainsKey(3)); //true
WriteLine(dictionary.ContainsValue("白"));//true

WriteLine("移除后");
//02.通过key移除元素
dictionary.Remove(1);
foreach (var dic in dictionary)
{
WriteLine(dic);
}
static void Main(string[] args)
{
//初始化
Dictionary<int, string> dictionary = new Dictionary<int, string>
{
{1, "red"},
{2, "blue"},
{3, "green"},
};
dictionary.Add(4, "pink");
dictionary[5] = "purple";
dictionary[3] = "白"; //更改key为3的

Print(dictionary);


}
//结构体,定义可设置或检索的键/值对。也就是说我们可以通过 它记录一个键/值对这样的值
//比如我们想定义一个ID(int类型)和Name(string类型)这样的键/值对,那么可以这样使用。
static void Print(IEnumerable<KeyValuePair<int, string>> items)
{
foreach (KeyValuePair<int, string> item in items)
{
WriteLine(item.Key+":"+item.Value);
}
}

集合_数组_16


5.this做为索引器

class Program
{
static void Main(string[] args)
{
Pair<string> pair=new Pair<string>("一休","大熊");
WriteLine(pair[PairItem.First]);
WriteLine(pair[PairItem.Second]);
ReadKey();
}
}

interface IPair<T>
{
T First { get;}
T Second { get;}
T this[PairItem index] { get; }
}

public enum PairItem
{
First,
Second,
}

public struct Pair<T> : IPair<T>
{
public T First { get; }
public T Second { get; }

public Pair(T First, T Second)
{
this.First = First;
this.Second = Second;
}
public T this[PairItem index]
{
get
{
switch (index)
{
case PairItem.First:
return First;
case PairItem.Second:
return Second;
default:
return default(T);
}
}
}
}

集合_初始化_17