• 使用集合组织相关数据


    1.在以后开发中都会使用集合作为数据容器。
    2.非泛型集合
      2.1 单列:ArrayList
        2.1.1 Add(Object):可以添加任何数据类型
               --引发问题:当我们遍历,除非将单个元素的类型写成Object
        2.1.2 Remove(真事的元素本身,Object类型)
                    --根据索引删除 RemoveAt(int index)
                    --特性:集合中的元素被删除后,索引会自动维护
      2.2 双列:HashTable
            问题:单列集合已经可以存储元素,并且可以轻松的通过各种方法去维护集合中的内容。为什么需要双列集合?
            解析:有特定的场景用途
        2.2.1 方案一:
          foreach(string key in table.keys){
            Console.WriteLine(key);
            Student stu=(Student).table[key];
            Console.WriteLine(stu);
          }
        2.2.2 方案二:
          foreach(Student stu in table.Values){
            Console.WriteLine(stu.Name);
          }
        2.2.3 方案三: key和value看成是一个整体 面向的就是table
          foreach(DictionaryEntry item in table){
            Console.WriteLine("key是{0}\tvalue是{1}",item.Key,(Student)item.Value.name);
          }
        2.2.4 删除数据table.Remove();只能按Key去删除一项,而不能通过下标删除
    3.泛型集合
      3.1 单列:List<T>
           list.Contains();判断列表中是否包含指定元素
      3.2 双列:Dictionary<K,V>
      3.3 泛型:就是为了约束ArrayList中元素类型,而制定的一个新的集合类型,该类型只能加入同一类型的多个元素,标识符<T>可以看成是一个占位符,泛型是将运行时错误提前到了编译时
    4.关于for增强
      4.1 C# //错误:item是个迭代变量 它不能被改变
      4.2 Java //没有语法错误,但是改不了,因为改的是迭代变量item的值,而不是和数组相关的某个下标对应的值。
    5.集合本质的讲解 (集合为什么可以扩容?)
      5.1 在Add()调度的时候
      5.2 使用ArrayList首先需要引入命名空间
      5.3 集合动态扩容原理:如果集合中元素个数为0,,并没有开辟空间
      5.4 默认如果集合中出现了第一个元素,那么集合的大小是4,如果放入第5个元素,那么会扩容成8
      5.5 如果在小括号中首次定义的时候指定了集合的长度,那么以后扩容的方式变成初次指定数字大小的2倍,如果没有指定长度,那么遵循5.2规范
      5.6 集合内部也是通过两个数组相互copy完成的,但是微软已经对其做了优化,我们不用关心效率问题
      5.7 集合的容量list.Capacity
      5.8 集合装了几个元素list.Count
    6.集合初始化器 (两种)
      6.1 ArrayList list=new ArrayList(){"001","002"};
      6.2 ArrayList list=new ArrayList(){
          new Student(){Name="阿苏",Age=18},
          new Student(){Name="baby",Age=8}
        };

    7.自动扩容
      如果集合中一个元素都没有,Capacity的值为0,如果集合中出现第一个元素,分配4个空间,加入第5个元素的时候,可以容纳8个元素,每次扩容会扩成上次的2倍

    问题一:什么是集合?
      将一对数据类型相同的数据放入一个容器内,该容器就是一个集合。
    问题二:什么是数组?
      内存中开辟的一连串空间

  • 相关阅读:
    crontab使用
    python 学习 第一课
    php调用阿里大鱼 接口curl
    thinkphp 动态 级联
    nginx重启
    linux查看 文件夹大小
    mysql convert
    mysql 数据库导入 导出,解决 导入 错误问题
    .net 更新数据 ado.net parameter
    PHP的超全局变量$_SERVER
  • 原文地址:https://www.cnblogs.com/GIRLANDBOYS/p/7002010.html
Copyright © 2020-2023  润新知