using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
namespace homework
{
                           //枚举能不能做//枚举如何实现
    public class MyList <T>:IEnumerable,IEnumerator{
        //创建集合字段要初始化
        public List<T> list = new List<T>();
        private int currentIndex = 0;

public IEnumerator GetEnumerator()
        {
            return this;
        }
        //先走MoveNext 再走Current 
        //移位
        public bool MoveNext()
        {
            if (currentIndex<list.Count)
            {
                return true;
            }
            Reset();
            return  false;
        }
        public object Current
        {
            get
            {
                Object obj = list[currentIndex];
                currentIndex++;
                return obj;
            }
        }
        //重置  是用来重置循环打印次数;
        public void Reset()
        {
            currentIndex = 0;
        }
    }
    class MainClass
    {
        public static void Main(string[] args)
        {
            #region // A类 //第一题: 哈希表和字典存取数据所消耗的时间对比
            //题目
            //解题思路
            //1.分别创建哈希表与字典
            //2.分别添加对应的数据使用stopwatch统计耗时
            //3.分别取对应的数据使用stopwatch统计耗时

//添加数据比较;
            Hashtable hash = new Hashtable();
            Stopwatch stop_1 = new Stopwatch();
            stop_1.Start();
            hash.Add("jiangkai", 10);
            stop_1.Stop();
            Console.WriteLine("哈希表的时间为:" + stop_1.Elapsed);

Dictionary<string, int> dic = new Dictionary<string, int>();
            Stopwatch stop_2 = new Stopwatch();
            stop_2.Start();
            dic.Add("jiangkai", 10);
            stop_2.Stop();
            Console.WriteLine("字典的时间为:" + stop_2.Elapsed);

//取数据比较;
            Stopwatch stop_3 = new Stopwatch();
            stop_3.Start();
            hash.Remove("jiangkai");
            stop_3.Stop();
            Console.WriteLine("哈希表的时间为:" + stop_3.Elapsed);

Stopwatch stop_4 = new Stopwatch();
            stop_4.Start();
            dic.Remove("jiangklai");
            stop_4.Stop();
            Console.WriteLine("字典的时间为:" + stop_4.Elapsed);
            #endregion

#region //第二题: 查询MSDN文档,练习ArrayList集合下面的常用API练习一遍.然后思考ArrayList能用于开发中(或者你接触过的游戏中)的那些地方? 至少写出两个, 并能分析出其实现方式.
            ArrayList arr = new ArrayList();
            arr.Add("lwj");
            arr.Add(12);
            arr.Add('a');
            foreach (var item in arr)
            {
                Console.Write(item + " ");
            }
            //指定下标插入元素;
            arr.Insert(1, "niubi");
            Console.WriteLine("");
            foreach (var item in arr)
            {
                Console.Write(item + " ");
            }
            //是否包含一个指定元素
            bool isexit = arr.Contains(12);
            Console.WriteLine("\n" + isexit);
            //逆转
            arr.Reverse();
            foreach (var item in arr)
            {
                Console.Write(item + " ");
            }
            //移除指定下标元素;
            arr.RemoveAt(2);
            Console.WriteLine("");
            foreach (var item in arr)
            {
                Console.Write(item + " ");
            }
            //移除指定元素
            arr.Remove("lwj");
            Console.WriteLine("");
            foreach (var item in arr)
            {
                Console.Write(item + " ");
            }
            //移除所有元素
            arr.Clear();
            Console.WriteLine("");
            foreach (var item in arr)
            {
                Console.Write(item + " ");
            }
            //ArrayList能用于:1、游戏中的技能BUFF移除、添加等操作; 2、游戏物品栏的添加移除操作;

#endregion

//解题思路
            //1.自定义类拥有集合的作用,意味着类成员至少有一个为系统提供的集合
            //2.利用系统集合的方法,使用本类进行二次封装
            //3.类支持foreach循环,必须实现IEnumerable接口
            //4.利用里氏替换原则替换父类实现IEnumerator
            //5.创建测试类
            //6.利用自定类内部的索引器添加测试类对象
            //7.测试foreach循环
            int[] array = { 12, 232, 343, 2322 };
            MyList<int> mylist = new MyList<int>();
            mylist.list = new List<int>(array);
            foreach (var item in mylist)
            {
                Console.WriteLine(item);
            }

}
    }
}

lwj_C#_集合的使用、接口方法的实现;相关推荐

  1. 三菱q系列plc连接电脑步骤_三菱q系列plc cc-link通讯方法的实现-说明书.pdf

    www.PLC 三菱 Q 系列 PLC CC-LINK 通讯方法的实现 三菱Q系列PLC CC-Link通讯方法的实现 一一.. 概况 概况 一一.. 概况概况 N C D. L R O 二二.. 定 ...

  2. java集合框架的接口_Java集合框架——Set接口

    第三阶段 JAVA常见对象的学习 集合框架--Set接口 List集合的特点是有序的,可重复的,是不是存在这一种无序,且能保证元素唯一的集合呢?(HashSet )这就涉及到我们今天所要讲的Set集合 ...

  3. Java集合框架——List接口

    第三阶段 JAVA常见对象的学习 集合框架--List接口 image 按照集合框架的继承体系,我们先从Collection中的List接口开始学习 (一) 概述及功能(ArrayList演示) (1 ...

  4. 【Java集合】List接口常用方法及实现子类

    文章目录 List接口 > List 接口的常用方法 > List的三种遍历方式 > List 排序练习 ※ ArrayList 使用注意事项 ※ ArrayList 底层结构 ※ ...

  5. java 集合 接口_Java集合之Collection接口

    1 - Java集合介绍 /* 1. 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象 的操作,就要对对象进行存储. 2. 另一方面,使用Array存储对象方面具有一些弊 端,而 ...

  6. python运行mcmc为何老出错_python中mcmc方法的实现

    MCMC方法在贝叶斯统计中运用很多,MIT发布的EMCEE是实现的比较好的.介绍页面在下面.源代码中examples里的代码可以帮助理解各种功能,特别是line.py 列出了最小二乘法,最大似然法和M ...

  7. c++ map iterator 获取key_Java集合框架——Map接口

    第三阶段 JAVA常见对象的学习 集合框架--Map集合 在实际需求中,我们常常会遇到这样的问题,在诸多的数据中,通过其编号来寻找某一些信息,从而进行查看或者修改,例如通过学号查询学生信息.今天我们所 ...

  8. 一文介绍备机重建各种方法的实现机制

    摘要:本文将介绍备机重建各种方法的实现机制,并结合应用场景分析,以及对新增参数的使用建议,以期获得最佳应用效果. 本文分享自华为云社区<先码再看,一文介绍备机重建各种方法的实现机制>,原文 ...

  9. arraylist插入数据_集合系列 List(二):ArrayList

    ArrayList 是 List 集合的列表经典实现,其底层采用定长数组实现,可以根据集合大小进行自动扩容. public class ArrayList extends AbstractList i ...

  10. 微信小程序实名认证接口_人脸核身接口整理

    一.微信小程序实名认证接口_人脸核身接口整理 开场一个字: 悲观.目前实名接口,人脸识别接口开放度不高."实名信息授权"已经回收. 二.人脸核身接口 1.使用条件 需要现申请通过才 ...

最新文章

  1. 阿里云 Redis 开发规范
  2. Mac下安装SVN for Eclipse插件
  3. DroidPilot 测试脚本详解 (一)
  4. Nginx 优化详解
  5. 万豪旅享家官方商城携手神策数据,数字化礼遇更高质量的用户体验
  6. 五、Hive架构,安装和基本使用
  7. android aar项目_介绍如何调试Xamarin.Android的binding项目
  8. 【数论】YY的GCD(P2257)
  9. access重复数据累计_小程序·云开发之数据库自动备份丨云开发101
  10. 土木工程--钢筋下料软件(续)
  11. 系统架构图 云架构案例
  12. Unicode中的数学符号
  13. 【大数据技术干货】(还不懂数仓,数据中心?看这一篇就够了!)在实际的开发生产中,让你了解企业级数据中心整体架构(DB+ETL+ODS+DW+DM)的各个层次的过程详解,数据联系及功能区分
  14. 若依前后端分离密码修改成功,登录提示用户名或密码不正确。
  15. mysql数据库安全加固
  16. Linux——chmod命令用法
  17. 人工智能 java 坦克机器人系列: 强化学习_人工智能 Java 坦克机器人系列: 强化学习...
  18. 四年开发,最重要的是战略,把目标告诉一个你信赖的人,让他保管
  19. 悬置位移matlab,Matlab讨论区 - 声振论坛 - 振动,动力学,声学,信号处理,故障诊断 - Powered by Discuz!...
  20. 机器学习基础:ROC曲线与AUC计算详解

热门文章

  1. 李航《统计学习方法》课后习题答案(第2版)
  2. R 计算平均值标准误差
  3. docker安装gamit_gamit的安装步骤
  4. 接口测试需要了解的八种数据类型
  5. Golang获取时间戳并增加一天
  6. Step 1: 盲打第三天
  7. 试图将一个数学定理证明到最底层的数哲原理...
  8. Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletCont
  9. 2017中国之旅系列之十:山西张壁古堡之旅
  10. wps怎么关闭广告wps广告关闭