zoukankan      html  css  js  c++  java
  • 集合(ArrayList、Hashtable、泛型集合)

    集合类
    数组特点:类型统一、长度固定
    集合特点:不限类型、长度可变
    集合常用操作:添加、修改、移除、查找、遍历,主要从这5个方面学习
    命名空间System.Coections
     
    Arrayist:(可以看成动态数组)
    可变长度数组,使用类似于数组,使用索引访问和遍历
    属性Capacity:集合中可以容纳元素的个数,空间不够使,翻倍增长
    属性Count:集合中实际存放的元素的个数
    方法Add() 、AddRange(Icoection c) :添加
    方法Remove()删除指定的元素、RemoveAt() 删除指定下标的元素:删除元素,删除后,后面的元素索引自动-1
    方法Cear() :清除
    方法Contains()包含 、ToArray()转为数组、Sort()排序、Reverse()反转
    集合中可以存放任何类型的数据,但是无论什么类型的数据放到Arrayist中以后都变成了Object类型,所以从Arrayist中取出的数据需要类型转换、
     
    自定义排序
    方法1:让自定义类实现IComparabe接口,实现CompareTo方法;此时,使用Arrayist对象的Sort()方法即可排序
    方法2:自定义比较器,让类实现IComparer接口,实现CompareTo方法;此时,使用Arrayist对象的Sort(IComparer)方法,将自定义比较器对象作为参数即可排序
     
    Hashtabe
    以键值对的形式存储数据
    键不能重复
    查找元素的时候速度很快,使用键进行计算哈希码,然后这个哈希码作为地址,将值数据存入
    方法Add(object key,object vaue);
    方法hash[“key”]:访问
    方法hash[“key”]=“”:可以添加、修改
    方法ContainsKey(“key”)、Contains():是否包含某个键
    方法Remove(“key”):根据键删除某个项
    属性Keys、属性Vaues
    遍历时,项的类型是DictionryEntry
     
     
    foreach执行原理(*)
    想使用foreach来循环遍历某类型,这个类型必须实现了IEnumerabe接口,实现pubic IEnumerator GetEnumErator()方法
    该方法返回IEnumerator类型的对象,此方法不是用来遍历,而是用来得到一个迭代器,这个迭代器才是用于遍历的对象
    画图演示执行过程:如何得到迭代器,如何移动指针
    foreach循环是只读的,不能用来修改数据
    foreach循环式只进的,并且是一条一条循环的
     
     
    泛型集合
    命名空间System.Coections.Generic
    带有<类型名>的类型,称为泛型
    •ist<T>是Arrayist的升级版,方法类似于Arrayist
    •Dictionary<K,V>是Hashtabe的升级版,方法类似于Hashtabe
    •以后用到集合时,推荐使用泛型集合
      T,K,V就像一把锁,锁住集合只能存某种特定的类型,这里的T,K,V也可以是其它字母
    泛型集合可以进行foreach遍历,是因为实现了IEnumerabe<T>具有了GetEnumerator()方法
    示例:
    ist<int> 这个表示该类型是一个存储int类型的集合
    Dictionary<string, Person> 表示用字符串作为键,用Person作为值的集合
     
     
     
     
  • 相关阅读:
    0X03异常错误处理
    (组合数学)AtCoder Grand Contest 019 F
    (NTT)AtCoder Grand Contest 019 E
    (dp)AtCoder Grand Contest 019 D
    (dp)AtCoder Regular Contest 081 E
    (最小费用流)hdu 6118(2017百度之星初赛B 1005) 度度熊的交易计划
    (容斥)Codeforces Round #428 (Div. 2) D. Winter is here
    (最大团)Codeforces Round #428 (Div. 2) E. Mother of Dragons
    (FFT)HDU 6088(2017 多校第5场 1004)Rikka with Rock-paper-scissors
    近期部分题目汇总
  • 原文地址:https://www.cnblogs.com/zxx193/p/3006392.html
Copyright © 2011-2022 走看看