C#中集合ArrayList与Hashtable的使用
C#中集合ArrayList与Hashtable的使用
http://blog.csdn.net/linukey/article/details/42506819
ArrayList:
一.
注意事项:
1.可以指定ArrayList集合的初始大小
var list = new ArrayList(10);//容纳10个元素
若不指定大小,则默认大小为0,添加一个后为4,然后以倍数递增。
2.ArrayList是Array的复杂版本,ArrayList内部封装了一个Object类型的数组,从一般的意义来说,它和数组没有本质的差别,甚至于ArrayList的许多方法,如Index、IndexOf、Contains、Sort等都是在内部数组的基础上直接调用Array的对应方法。
3.内部的Object类型的影响 : 对于一般的引用类型来说,这部分的影响不是很大,但是对于值类型来说,往ArrayList里面添加和修改元素,都会引起装箱和拆箱的操作,频繁的操作可能会影响一部分效率。此时应该用泛型类替代ArrayList。
4.数组扩容 :这是对ArrayList效率影响比较大的一个因素。 每当执行Add、AddRange、Insert、InsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,如果不够,它就会以当前容量的两倍来重新构建一个数组,将旧元素Copy到新数组中,然后丢弃旧数组,在这个临界点的扩容操作,应该来说是比较影响效率的。
5.频繁的调用IndexOf、Contains等方法(Sort、BinarySearch等方法经过优化,不在此列)引起的效率损失,首先,我们要明确一点,ArrayList是动态数组,它不包括通过Key或者Value快速访问的算法,所以实际上调用IndexOf、Contains等方法是执行的简单的循环来查找元素,所以频繁的调用此类方法并不比你自己写循环并且稍作优化来的快,如果有这方面的要求,建议使用Hashtable或SortedList等键值对的集合。
二:
属性及方法
属性:
1.Count:目前ArrayList包含的元素的数量,这个属性是只读的。
2.Capacity:目前ArrayList能够包含的最大数量,可以手动的设置 这个属性,但是当设置为小于Count值的时候会引发一个异常。
方法:
1.Int Add(object value);
用于添加一个元素到当前列表的末尾。
2.Int AddRange(object value);
用于添加一个集合或数组到当前列表的末尾。
3.void Remove(object obj);
用于删除一个元素,通过元素本身的引用来删除。
4.void RemoveAt(int index);
用于删除一个元素,通过索引值来删除。
5.void RemoveRange(int index, int count);
用于删除一个集合或数组,通过指定开始的索引和删除的数量来删除。
6.void Insert(int index, object value)
用于添加一个元素到制定位置,列表后面的元素依次往后移动。
7.void InsetRange(int index, Icollection collec)
用于从指定位置添加一个集合或数组
8.void Sort()
对集合中的元素进行排序
9.void Reverse();
将ArrayList或它的一vufenzhong元素的顺序反转
10. Int IndexOf(object);
Int IndexOf(object, int);
Int IndexOf(object, int, int);
返回ArrayList或它的一部分中某个值的第一个匹配项的从零开始的索引。没有找到返回-1。
11.Int LastIndexOf(object)
Int LastIndexOf(object, int)
Int LastIndexOf(object, int, int)
返回ArrayList或它的一部分中某个值得最后一个匹配项的从零开始的索引。没找到返回-1
12.void TrimSize()
用于将ArrayList固定到实际元素的大小,当动态数组元素确定不再添加的时候,可以调用这个方法来释放空余的内存
13.void Clear()
清空ArrayList中的所有元素
14.Array ToArray()
这个方法把ArrayList中的元素copy到一个新的数组中
Hashtable
常用方法:
1.在哈希表中添加一个keyvalue键值对:HashtableObject.Add(key,value);
2.在哈希表中去除某个keyvalue键值对:HashtableObject.Remove(key);
3.从哈希表中移除所有元素: HashtableObject.Clear();
4.判断哈希表是否包含特定键key: HashtableObject.Contains(key);
C#中集合ArrayList与Hashtable的使用的更多相关文章
- 第三章泛型集合ArrayList 和Hashtable
第三章泛型集集合 ArrayList 变量名 = new ArrayList(); //相当与一个容器 他的执行using 是 using System.Collections; 变量名.ADD( ...
- c#重点[集合类型]异常,数组,集合ArrayList,List<>,hashTable,hashtable泛型(Dictionary)
1.foreach[对一些数组或集合进行遍历] foreach(类型 变量名 in 集合对象){语句体} //定义一个数组 ,,,,, }; foreach(var i in sNum1) { Con ...
- Java中list集合ArrayList 中contains包含的使用
Java中list集合ArrayList 中contains包含的使用 https://blog.csdn.net/qq_38556611/article/details/78774690
- Java基础系列 - JAVA集合ArrayList,Vector,HashMap,HashTable等使用
package com.test4; import java.util.*; /** * JAVA集合ArrayList,Vector,HashMap,HashTable等使用 */ public c ...
- 集合 ArrayList 类
集合的基本信息: System.Collections 系统类中的收藏类,定义各种对象(如列表,队列,位数组,哈希表和字典)的集合 常用的集合为ArrayList类:特殊集合一般会用到Queue队 ...
- ArrayList、HashTable、List、Dictionary的演化及如何选择使用
在C#中,数组由于是固定长度的,所以常常不能满足我们开发的需求. 由于这种限制不方便,所以出现了ArrayList. ArrayList.List<T> ArrayList是可变长数组,你 ...
- Java 集合系列 10 Hashtable详细介绍(源码解析)和使用示例
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- 类 Array Arraylist List Hashtable Dictionary
总结C# 集合类 Array Arraylist List Hashtable Dictionary Stack Queue 我们用的比较多的非泛型集合类主要有 ArrayList类 和 HashT ...
- Java中集合的概述
一.集合和数组的区别 1.数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用. 2.集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数 ...
随机推荐
- select列表遍历和触发事件
1.以下两种都是jquery获取select列表被选中的value.var strText=$("#select_id").find("option:selected&q ...
- Linux内核模块管理命令
1.insmod命令 在Linux系统下,insmod命令用于将给定的模块加载到内核中去,Linux系统有许多功能是通过模块的方式,在需要时才载入kernel,这样做可以使kernel较为精简,进而提 ...
- [转帖]UML类图关系图解
UML类图关系图解 https://www.cnblogs.com/TvvT-kevin/p/9357339.html 一.类结构 在类的UML图中,使用长方形描述一个类的主要构成,长方形垂直地分为三 ...
- [转帖]程序员:我终于知道post和get的区别
程序员:我终于知道post和get的区别 置顶 2019-11-14 00:03:09 zhanglinblog 阅读数 15316 文章标签: post和get的区别程序员 更多 分类专栏: .ne ...
- Java 8——Lambda表达式
本篇文章不介绍Lambda的前世今生,这里只对Lambda表达的应用做详细了解.以及与内部类的差异点. Lambda表达式 Lambda表达式是Java SE 8版本中引入的新的语法糖.将功能看做方法 ...
- asp.net core 系列之Performance的 Response compression(响应压缩)
本文,帮助了解响应压缩的一些知识及用法(大部分翻译于官网,英文水平有限,不准确之处,欢迎指正). 什么是响应压缩?响应压缩简单的说就是为了减少网络带宽,而把返回的响应压缩,使之体积缩小,从而加快响应的 ...
- Debian 9 / Debian 10 / Ubuntu 18.04 / Ubuntu 18.10快速开启BBR加速 或 关闭BBR加速
如果使用的是Debian 9.Debian 10.Ubuntu 18.04.Ubuntu 18.10等内核高于4.9版本的系统,均可以使用此方法开启BBR加速,若你使用了Ubuntu 19.04的系统 ...
- C#读写设置修改调整UVC摄像头画面-增益
有时,我们需要在C#代码中对摄像头的增益进行读和写,并立即生效.如何实现呢? 建立基于SharpCamera的项目 首先,请根据之前的一篇博文 点击这里 中的说明,建立基于SharpCamera的摄像 ...
- 【3.1】学习C++之再逢const
随着学习的深入,就会发现曾经学的const还有更深入的用法,现在就对const的未总结的用法进行总结. 本文就是针对const在类中的情况进行的总结. 有时我们会遇到下面这种将类的成员变量用const ...
- jQuery中的DOM操作【续】
一.复制节点$(选择器字符串).clone(false) [返回克隆的节点对象]参数:false,浅复制,复制元素但不复制元素中所绑定的事件[默认为false]true,深复制,复制元素且复制元 ...