zoukankan      html  css  js  c++  java
  • 使用集合组织相关数据

    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倍

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

  • 相关阅读:
    动态添加元素在ie中的事件(eg:onclick)无反应
    c# NOPI导出excel后 “发现有部分内容有问题 ”
    js中使用类和数组
    1.0 c#设计模式 --单例模式
    请求接口帮助类封装
    vs2017运行网站,代码停止,浏览器页面关闭问题解决
    无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动
    第8课 商业需求文档(BRD)撰写方法与技巧
    第7课 产品经理专业技能之 PRD/BRD/MRD文档撰写
    第六课 产品经理的知识管理
  • 原文地址:https://www.cnblogs.com/GIRLANDBOYS/p/7002010.html
Copyright © 2011-2022 走看看