lwj_C#_集合的使用、接口方法的实现;
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#_集合的使用、接口方法的实现;相关推荐
- 三菱q系列plc连接电脑步骤_三菱q系列plc cc-link通讯方法的实现-说明书.pdf
www.PLC 三菱 Q 系列 PLC CC-LINK 通讯方法的实现 三菱Q系列PLC CC-Link通讯方法的实现 一一.. 概况 概况 一一.. 概况概况 N C D. L R O 二二.. 定 ...
- java集合框架的接口_Java集合框架——Set接口
第三阶段 JAVA常见对象的学习 集合框架--Set接口 List集合的特点是有序的,可重复的,是不是存在这一种无序,且能保证元素唯一的集合呢?(HashSet )这就涉及到我们今天所要讲的Set集合 ...
- Java集合框架——List接口
第三阶段 JAVA常见对象的学习 集合框架--List接口 image 按照集合框架的继承体系,我们先从Collection中的List接口开始学习 (一) 概述及功能(ArrayList演示) (1 ...
- 【Java集合】List接口常用方法及实现子类
文章目录 List接口 > List 接口的常用方法 > List的三种遍历方式 > List 排序练习 ※ ArrayList 使用注意事项 ※ ArrayList 底层结构 ※ ...
- java 集合 接口_Java集合之Collection接口
1 - Java集合介绍 /* 1. 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象 的操作,就要对对象进行存储. 2. 另一方面,使用Array存储对象方面具有一些弊 端,而 ...
- python运行mcmc为何老出错_python中mcmc方法的实现
MCMC方法在贝叶斯统计中运用很多,MIT发布的EMCEE是实现的比较好的.介绍页面在下面.源代码中examples里的代码可以帮助理解各种功能,特别是line.py 列出了最小二乘法,最大似然法和M ...
- c++ map iterator 获取key_Java集合框架——Map接口
第三阶段 JAVA常见对象的学习 集合框架--Map集合 在实际需求中,我们常常会遇到这样的问题,在诸多的数据中,通过其编号来寻找某一些信息,从而进行查看或者修改,例如通过学号查询学生信息.今天我们所 ...
- 一文介绍备机重建各种方法的实现机制
摘要:本文将介绍备机重建各种方法的实现机制,并结合应用场景分析,以及对新增参数的使用建议,以期获得最佳应用效果. 本文分享自华为云社区<先码再看,一文介绍备机重建各种方法的实现机制>,原文 ...
- arraylist插入数据_集合系列 List(二):ArrayList
ArrayList 是 List 集合的列表经典实现,其底层采用定长数组实现,可以根据集合大小进行自动扩容. public class ArrayList extends AbstractList i ...
- 微信小程序实名认证接口_人脸核身接口整理
一.微信小程序实名认证接口_人脸核身接口整理 开场一个字: 悲观.目前实名接口,人脸识别接口开放度不高."实名信息授权"已经回收. 二.人脸核身接口 1.使用条件 需要现申请通过才 ...
最新文章
- 为什么说特斯拉在自动驾驶上比Waymo更占优势
- 05-RARP: 逆地址解析协议
- HDU 1271整数对
- mac系统下git、mysql、nginx、php的环境搭建
- 0基础搭建Hadoop大数据处理-初识
- 知道python网课答案_Python程序设计答案
- GetLocalTime
- nginx 配置文件的匹配规则
- [转载] java 枚举Enum源码解析
- STM32-Systick滴答定时器-延时函数
- eclipse修改工作的目录顺序
- python随机森林变量重要性_随机森林如何评估特征重要性【机器学习面试题详解】...
- linux怎么db2命令窗口,Linux 命令行进入DB2
- Atitit 面试问题高难度问题 回答不上来的分析应对法 目录 1. 问题分析法	1 1.1. 判断是否超出自己范围的,直接回复超出自己范围了	1 1.2. 根据生活中的解决方法,大概说下解决模式
- msys2 pacman 安装 删除等常见命令汇总
- 数据库管理-第二十九期 记一次AFD环境的存储变更(20220803)
- zabbix短信网关使用了中国网建SMS短信通
- 我的世界服务器ess汉化文件,《我的世界》ess插件指令大全
- mysql 漏洞 wa_[漏洞案例]thinkcmf 2.x从sql注入到getshell实战
- linux服务器创建wss服务 https+wss配置指南