一. 集合
- 集合概念
集合(Collection)类是专门用于数据存储和检索的类。这些类提供了对栈(stack)、队列(queue)、列表(list)和哈希表(hash table)的支持。大多数集合类实现了相同的接口。
- ArrayList集合
ArrayList list = new ArrayList();
//添加单个元素
list.Add(true);
list.Add(1);
list.Add("张三");
list.Clear();清空所有元素
list.Remove(true);删除单个元素 写谁就删出谁
list.RemoveAt(0);根据下标去删除元素
list.RemoveRange(0, 3);根据下标去移除一定范围的元素
list.Insert(1, "插入的");在指定的位置插入一个元素
bool b = list.Contains(1);判断是否包含某个指定的元素
list.Add("大男孩");
if (!list.Contains("大男孩"))
{
list.Add("大男孩");
}else{
Console.WriteLine("已经有了");
}
//循环打印
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
list.Sort();//升序排列
list.Reverse();反转
1、添加同一对象
using System.Collections.Generic;
public class Test(){
User u1 = new User ();
u1.Id = 101;
u1.Name = "张三";
User u2 = new User();
u2.Id = 102;
u2.Name = "李四";
ArrayList list = new ArrayList();
list.Add(u1);
list.Add(u2);
foreach(User u in list)
{
Debug.Log(u.Id + "\t" + u.Name);
}
}
2、添加多个不同对象
ArrayList list = new ArrayList();
User u=new User();
u1.Id = 101;
u1.Name = "张三";
Student s=new Student();
s.Id = 101;
s.Name = "李四";
list.Add(u);
list.Add(s);
foreach (object obj in list)
{
if (obj is Student)
{
Debug.Log("AAA");
}
if (obj is User)
{
Debug.Log("BBB");
}
}
IEnumerator :迭代器 [i'nju:mə,reitə]
IEnumerator it = list.GetEnumerator();
while(it.MoveNext()){
User u = (User)it.Current;
it.MoveNext();
Student s=(Student)it.Current;
Console.WriteLine(u.Name+"\t"+s.Name);
}
3、模板:template
class Chinese
{
string name;
int age;
}
class American
{
string name;
int age;
}
class Person<T>
{
T name;
T age;
}
class Test
{
static void Main(string[] args)
{
Person<Chinese> chinese = new Person<Chinese>();
Person<American> american = new Person<American>();
}
}
4、泛型
泛型是程序设计语言的一种特性,允许程序员在强类型程序设计语言中编写代码时定义一些可变部分,那些部分在使用前必须作出指明。
List<string> list = new List<string>();
list.Add("张三");
list.Add("李四");
list.Add("王五");
list.Add("田六");
list.Add("赵七");
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine("for循环:" + list[i]);
}
list.RemoveAt(0);
foreach (string item in list)
{
Console.WriteLine("foreach迭代:" + item);
}
- 栈
后进先出
Stack<int> s = new Stack<int>();
s.Push(1);
s.Push(2);
s.Push(3);
s.Push(4);
//Console.WriteLine(s.Peek());
// Console.WriteLine(s.Pop());
foreach (var item in s)
{
Console.WriteLine(item);
}
- 队列
先进先出
Queue<int> q = new Queue<int>();
q.Enqueue(1);
q.Enqueue(2);
q.Enqueue(3);
q.Enqueue(4);
//Console.WriteLine(q.Peek());
//Console.WriteLine(q.Dequeue());
foreach (var item in q)
{
Console.WriteLine(item);
}
- 字典
无序字典
Dictionary<int, string> d = new Dictionary<int, string>();
d.Add(1, "a");
d.Add(3, "c");
d.Add(4, "d");
d.Add(2, "b");
foreach (var item in d.Keys)
{
Console.WriteLine(item+"\t"+d[item]);
}
有序字典
SortedDictionary<int, string> d = new SortedDictionary<int, string>();
d.Add(1, "a");
d.Add(3, "c");
d.Add(4, "d");
d.Add(2, "b");
//正序
foreach (var item in d.Keys)
{
Console.WriteLine(item + "\t" + d[item]);
}
//倒序
foreach (var item in d.Reverse())
{
Console.WriteLine(item.Key + "\t" + item.Value);
}