集合,stack,queue,dictionary,ArrayList,list<T>

哎呀我去,昨天搞那个全排列和寻路算法搞得我脑袋都大了,忘写博了,唉 ,早起补上。。。。。。。

今天的东西挺多,但没什么难度。

集合:创建和管理相关对象组的第?种?式就是:创建对象集合。
   集合提供?种灵活的处理?法。 与数组不同,处理的对
   象组可根据程序更改的需要动态地增?和收缩。 对于某
   些集合,您可以为放?该集合的任何对象分配?个“键”,
   以便使?该键快速检索对象。
   注意: 集合是类,因此必须声明新集合后,才能向该集合
   中添加元素。集合分为两种类型: ?泛型集合和泛型集合。
   使??泛型集合的 需引?: System.Collections命名空间。
   使?泛型集合需引?: System.Collections.Generic命名
   空间。

stack:Stack称为栈,栈和队列?常相似,只不过队列是先进
   先出,?栈中的数据添加和移除都在?端进?,遵守栈
   中的数据则后进先出。 Stack类实现了ICollection和
   IEnumerable接?。 定义如下:

Stack stack = new Stack();
Stack<int> stackInt = new Stack<int>();

    Push() 将对象插?Stack的顶部。(?栈操作)
    Pop() 移除并返回Stack顶部的对象 。(出栈操作)
    Peek() 返回位于Stack顶部的对象,但不移除。
    Contains() 确定某元素是否在Stack中。
    Clear() 从Stack中移除所有对象。
    Count 获取Stack中包含的元素。

  1.后进先出( LIFO)的?种数据结构。
  2.随着向 Stack 中添加元素,容量通过重新分配按需?动
  增加。
  3.Stack 接受 null 作为有效值并且允许重复的元素。

Queue:Queue称为队列,队列是这样?种数据结构,数据有列
    表的?端插?,并由列表的另?端移除。就像单?道,
    只能从?段进,从?端出。 Queue类同样也是实现了
    ICollection和IEnumerable接?。

Queue queue = new Queue();
Queue<string> queueString = new Queue<string>();

    Enqueue() 将对象添加到 Queue 的结尾处。
    Dequeue() 移除并返回位于 Queue 开始处的对象。
    Peek() 返回位于 Queue 开始处的对象但不将其移除。
    Clear() 从 Queue 中移除所有对象。
    Contains() 确定某元素是否在 Queue 中。
    Count 获取 Queue 中包含的元素数。

  1.先进先出( FIFO)的?种数据结构。
  2.随着向Queue 中添加元素,容量通过重新分配按需?动增加。 可通过调? TrimToSize 来减少容量。
  3.Stack 接受 null 作为有效值并且允许重复的元素。
  4.在AI寻路算法中经常?的Queue。

Dictionary:Dictionary<TKey, TValue> 类称为字典类,表?键和
      值的集合。其中TKey表?字典中的类型, Tvalue表?
      字典中的值类型。 Dictionary类实现了ICollection、
      IEnumerable、 IDictionary·接?。 定义如下:

Dictionary<string, int> dic = new Dictionary<string, int>();

    Add() 将指定的键和值添加到字典中。
    TryGetValue() 获取与指定的键相关联的值。
    Clear() 从 Dictionary<TKey, TValue> 中移除所有的键和值。
    Remove() 从 Dictionary<TKey, TValue> 中移除所指定的键的值。
    ContainsKey() 确定 Dictionary<TKey, TValue> 是否包含指定的键。
    ContainsValue() 确定 Dictionary<TKey, TValue> 是否包含特定值。
    Count 获取Stack中包含的元素。
    Keys 获取包含 Dictionary<TKey, TValue> 中的键的集合。
    Values 获取包含 Dictionary<TKey, TValue> 中的值的集合。

  1.字典是?个泛型集合。
  2.TKey必须唯?。
  3.Value可以是变量,也可以是对象。

ArrayList:是?个特殊的数组。通过添加和删除元素,就可
    以动态改变数组的?度。 ArrayList并不是强类型, ArrayList
    可能并不总是提供特定任务的最佳性能。 ArrayList类实现了
    IList、 ICollection和IEnumerable接?。 定义如下:

ArrayList arraylist = new ArrayList();

    Add() 将对象添加到 ArrayList 的结尾处。
    Insert() 将元素插? ArrayList 的指定索引处。
    Remove() 从 ArrayList 中移除特定对象的第?个匹配项。
    RemoveAt() 移除 ArrayList 的指定索引处的元素。
    Reverse() 将整个 ArrayList 中元素的顺序反转。
    Contains() 确定某元素是否在ArrayList中。
    Clear() 从 ArrayList 中移除所有元素。
    Count 获取Stack中包含的元素。

  1.?持?动改变??的功能。
  2.可以灵活的插?元素、删除元素、访问元素。
  3.不是强类型,速度跟数组?起来要慢。

List<T>类:表?可通过索引访问的对象的强类型列表。 提供?
    于对列表进?搜索、排序和操作的?法。 List<T>是ArrayList
    类的泛型等效类,该类使???可按需动态增加的数组实现
    IList<T>泛型接?。 List<T>类同样也是实现了ICollection、
    IEnumerable和IList接?。 定义如下:

List<int> list = new List<int>();

    Add() 将对象添加到 List<T> 的结尾处。
    Insert() 将元素插? List<T> 的指定索引处。
    Remove() 从 List<T> 中移除特定对象的第?个匹配项。
    RemoveAt() 从 List<T> 中移除特定对象的第?个匹配项。
    RemoveAll() 移除与指定的谓词所定义的条件相匹配的所有元素。
    Reverse() 将整个 List<T> 中元素的顺序反转。
    IndexOf(T) 搜索指定的对象,并返回整个 List<T> 中第?个匹配项
    Sort() 的从零开始的索引。 使?默认?较器对整个 List<T> 中的元素进?排序。
    Contains() 确定某元素是否在ArrayList中。
    Clear() 从 List<T>中移除所有元素。
    Count 获取Stack中包含的元素。

  1.于ArrayList相?, List<T>好并且是类型安全的。
  2. 若List<T> 类的类型 T 使?是完全相同的。 但是,如果要考虑实现和装箱问题。

  //在一个有限平面区域上(1000 * 1000)随机生成有序的n个点(用结构体表示点),将其保存在集合中
            //  (1)输出所有点的坐标信息
            //  (2)计算有序相邻两点距离之和(先排序,再求距离)

            Random rd = new Random();
            Point p;
            Dictionary<int, int> position = new Dictionary<int, int>();
            int n = int.Parse(Console.ReadLine());
            int i = 0;
            for (int j = 0; j < n; j++)
            {
                p.x = rd.Next(0, 1000);
                p.y = rd.Next(0, 1000);
                int pos = 10000 * p.x + p.y;
                position.Add(i, pos);
                i++;
            }
            //输出dictionary
            foreach (KeyValuePair<int, int> item in position)
            {
                int x = item.Value / 10000;
                int y = item.Value % 10000;
                Console.WriteLine("({0},{1})", x, y);
            }
            Console.WriteLine();

            //排序   冒dictionary泡
            for (int j = 0; j < i; j++)
            {
                for (int m = 0; m < i - j - 1; m++)
                {
                    if (position[m] > position[m + 1])
                    {
                        int temp = position[m];
                        position[m] = position[m + 1];
                        position[m + 1] = temp;
                    }

                }
            }

            foreach (KeyValuePair<int, int> item in position)
            {
                int x = item.Value / 10000;
                int y = item.Value % 10000;
                Console.WriteLine("({0},{1})", x, y);
            }
            Console.WriteLine();

            //求距离   = =
            double sum = 0;
            for (int j = 0; j < i - 1; j++)
            {
                int x1 = position[j] / 10000;
                int y1 = position[j] % 10000;
                int x2 = position[j + 1] / 10000;
                int y2 = position[j + 1] % 10000;
                int temp = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);
                sum += System.Math.Sqrt(temp);
            }
            Console.WriteLine(sum);
时间: 2024-10-09 03:20:09

集合,stack,queue,dictionary,ArrayList,list<T>的相关文章

特殊集合 Stack Queue Hashtable

//Stack    干草堆集合    栈集合      先进后出 Stack st = new Stack(); //实例化 初始化 st.Push(2); //添加元素 st.Push(6); st.Push(9); st.Push(5); st.Push(1); Console.WriteLine(st.Count); Console.WriteLine(st.Peek()); //peek方法,只查看不弹出 Console.WriteLine(st.Pop()); //只要使用pop方法

集合、ArrayList 集合。Stack集合。Queue集合。以及Hashtable集合

arrayList 首先复制Colections加  : 创建arrayList ar =new arrayList(); //ArrayList al=new ArrayList();            //实例化初始化            //al.Add(4);            //真的添加            //al[0]=3;            //al[0]这种赋值方式只是修改            //Console.WriteLine(al[0]);     

集合( Stack / Queue / Hashtable 都没有索引)

/*   // 集合     Stack         没有索引!"好比是死胡同"   Stack s=new Stack ();       //特殊集合  堆!先进后出,后进先出!   s.Push("1");                //赋值内容  要用     “”   s.Push("2"); s.Push("3"); s.Push("4"); s.Push("5");

15-07-10 Stack集合、queue集合、hashtable集合

1.栈:Stack,先进后出,一个一个赋值,一个一个取值,按顺序. .count           取集合内元素的个数 .push()         将元素一个一个推入集合中//stack集合存入用.push() .pop()           将元素一个个弹出集合 .clear()         清空集合 Stack s = new Stack();//先存入的后取出 s.Push(1); s.Push(2); s.Push(3); Console.WriteLine(s.Pop())

Stack集合、queue集合、hashtable集合

1.栈:Stack,先进后出,一个一个赋值,一个一个取值,按顺序. .count           取集合内元素的个数 .push()         将元素一个一个推入集合中//stack集合存入用.push() .pop()           将元素一个个弹出集合 .clear()         清空集合 Stack s = new Stack();//先存入的后取出 s.Push(1); s.Push(2); s.Push(3); Console.WriteLine(s.Pop())

【转】Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例

概要 上一章,我们学习了Collection的架构.这一章开始,我们对Collection的具体实现类进行讲解:首先,讲解List,而List中ArrayList又最为常用.因此,本章我们讲解ArrayList.先对ArrayList有个整体认识,再学习它的源码,最后再通过例子来学习如何使用它.内容包括:第1部分 ArrayList简介第2部分 ArrayList数据结构第3部分 ArrayList源码解析(基于JDK1.6.0_45)第4部分 ArrayList遍历方式第5部分 toArray

STL容器用法速查表:list,vector,stack,queue,deque,priority_queue,set,map

STL容器用法速查表:list,vector,stack,queue,deque,priority_queue,set,map   list vector deque stack queue priority_queue set [unordered_set] map [unordered_map] multimap [unordered_multimap]     contiguous storage double-ended queue LIFO FIFO 1st is greatest  

stack queue priority_queue

可以直接使用的数据结构 stack queue priority_queue 头文件 <stack> <queue> <queue> 声明 stack<int>s1 queue<int>q; #include<functional> #include<vector> priority_queue<int,vector<Int>,less<Int>> pq; 从小到大 容量 s1.size

STL容器适配器 stack, queue

stack是一种后进先出(last in first out)的数据结构.它只有一个出口,如图所示.stack允许新增元素,删除元素,取得最顶端元素.但除了最顶端外,没有其他任何地方可以存储stack的其他元素,换言之,stack不允许有遍历行为. 将元素推入stack的操作称为push, 将元素推出stack的操作称为pop. 为什么将stack称为适配器呢?我们先来看看适配器是怎么定义的.具有这种“修改某物接口,形成另一种风貌”之性质者,称为adapter(适配器).换言之,由于stack的

(转)Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例

概要 上一章,我们学习了Collection的架构.这一章开始,我们对Collection的具体实现类进行讲解:首先,讲解List,而List中ArrayList又最为常用.因此,本章我们讲解ArrayList.先对ArrayList有个整体认识,再学习它的源码,最后再通过例子来学习如何使用它.内容包括:第1部分 ArrayList简介第2部分 ArrayList数据结构第3部分 ArrayList源码解析(基于JDK1.6.0_45)第4部分 ArrayList遍历方式第5部分 toArray