0
点赞
收藏
分享

微信扫一扫

深度学习500问——Chapter02:机器学习基础(1)

小龟老师 03-04 21:00 阅读 4

在这里插入图片描述

介绍

集合继承IEnumerable

在C#中,集合类型有很多种,每种都有其特定的使用环境和适用场景。
数组 (Array):
用于存储固定大小的同类型元素。
适用于需要快速随机访问元素的情况。

int[] numbers = new int[5] { 1, 2, 3, 4, 5 };

列表 (List):
用于存储可变大小的同类型元素序列。
适用于需要频繁添加或删除元素的场景。

List<string> names = new List<string>();
names.Add("Alice");
names.Add("Bob");

队列 (Queue):
用于实现先进先出(FIFO)的数据结构。
适用于任务调度、消息传递等场景。

Queue<int> queue = new Queue<int>();
queue.Enqueue(1);
queue.Enqueue(2);

栈 (Stack):
用于实现后进先出(LIFO)的数据结构。
适用于表达式求值、深度优先搜索等场景。

Stack<string> stack = new Stack<string>();
stack.Push("A");
stack.Push("B");

字典 (Dictionary):
用于存储键值对集合。
适用于需要快速通过键查找值的情况。

Dictionary<string, int> ages = new Dictionary<string, int>();
ages.Add("Alice", 30);
ages.Add("Bob", 35);

集合 (Set):
用于存储独一无二的元素。
适用于需要去重或集合运算的场景。

HashSet<int> set = new HashSet<int>();
set.Add(1);
set.Add(2);

链表 (LinkedList):
用于存储元素以节点形式组织的数据结构。
适用于频繁的插入和删除操作,但不适用于随机访问。

LinkedList<string> linkedList = new LinkedList<string>();
linkedList.AddLast("A");
linkedList.AddLast("B");

排序列表 (SortedList):
用于存储已排序的键值对集合。
适用于需要快速查找和有序遍历的场景。

SortedList<int, string> sortedList = new SortedList<int, string>();
sortedList.Add(3, "C");
sortedList.Add(1, "A");

有序字典 (SortedDictionary):
用于存储已排序的键值对集合。
适用于需要有序键值对集合的场景。

SortedDictionary<int, string> sortedDictionary = new SortedDictionary<int, string>();
sortedDictionary.Add(3, "C");
sortedDictionary.Add(1, "A");

可观察集合 (ObservableCollection):
用于实现数据绑定和通知变化的动态集合。
适用于需要与界面交互并实时更新的场景。

ObservableCollection<string> observableCollection = new ObservableCollection<string>();
observableCollection.Add("Item 1");

键控集合 (KeyedCollection):
用于存储具有唯一键的元素集合。
适用于需要通过键进行查找和检索的场景。

public class PersonCollection : KeyedCollection<string, Person>
{
    protected override string GetKeyForItem(Person item) => item.Name;
}

树形集合 (Tree):
用于存储具有层级结构的数据。
适用于表示组织结构、文件系统等场景。

// 示例:自定义树形结构
public class TreeNode<T>
{
    public T Data { get; set; }
    public List<TreeNode<T>> Children { get; set; } = new List<TreeNode<T>>();
}

线程安全的集合
在多线程环境中,为了确保线程安全,可以使用以下线程安全的集合:

这些线程安全的集合类型能够在多线程环境中保证数据的一致性和完整性,避免出现竞态条件和死锁等问题。

举报

相关推荐

0 条评论