一、Array类

1、Array类的属性

序号 属性 & 描述
1 IsFixedSize 获取一个值,该值指示数组是否带有固定大小。
2 IsReadOnly 获取一个值,该值指示数组是否只读。
3 Length 获取一个 32 位整数,该值表示所有维度的数组中的元素总数。
4 LongLength 获取一个 64 位整数,该值表示所有维度的数组中的元素总数。
5 Rank 获取数组的秩(维度)。

2、Array类的方法

序号 方法 & 描述
1 Clear 根据元素的类型,设置数组中某个范围的元素为零、为 false 或者为 null。
2 Copy(Array, Array, Int32) 从数组的第一个元素开始复制某个范围的元素到另一个数组的第一个元素位置。长度由一个 32 位整数指定。
3 CopyTo(Array, Int32) 从当前的一维数组中复制所有的元素到一个指定的一维数组的指定索引位置。索引由一个 32 位整数指定。
4 GetLength 获取一个 32 位整数,该值表示指定维度的数组中的元素总数。
5 GetLongLength 获取一个 64 位整数,该值表示指定维度的数组中的元素总数。
6 GetLowerBound 获取数组中指定维度的下界。
7 GetType 获取当前实例的类型。从对象(Object)继承。
8 GetUpperBound 获取数组中指定维度的上界。
9 GetValue(Int32) 获取一维数组中指定位置的值。索引由一个 32 位整数指定。
10 IndexOf(Array, Object) 搜索指定的对象,返回整个一维数组中第一次出现的索引。
11 Reverse(Array) 逆转整个一维数组中元素的顺序。
12 SetValue(Object, Int32) 给一维数组中指定位置的元素设置值。索引由一个 32 位整数指定。
13 Sort(Array) 使用数组的每个元素的 IComparable 实现来排序整个一维数组中的元素。
14

ToString 返回一个表示当前对象的字符串。从对象(Object)继承。

下面的程序演示了 Array 类的一些方法的用法:

namespace ArrayApplication
{
class MyArray
{ static void Main(string[] args)
{
int[] list = { 34, 72, 13, 44, 25, 30, 10 };
int[] temp = list; Console.Write("原始数组: ");
foreach (int i in list)
{
Console.Write(i + " ");
}
Console.WriteLine(); // 逆转数组
Array.Reverse(temp);
Console.Write("逆转数组: ");
foreach (int i in temp)
{
Console.Write(i + " ");
}
Console.WriteLine(); // 排序数组
Array.Sort(list);
Console.Write("排序数组: ");
foreach (int i in list)
{
Console.Write(i + " ");
}
Console.WriteLine(); Console.ReadKey();
}
}
}

当上面的代码被编译和执行时,它会产生下列结果:

原始数组: 34 72 13 44 25 30 10
逆转数组: 10 30 25 44 13 72 34
排序数组: 10 13 25 30 34 44 72

 补充:关于Array.Copy()用法与Array.Clone()用法

class ArrayCopy
{
        static void Main(string[] args)
        {
            int[] intArray1 = { 1, 2,3,4,5,6,7,8,9,10 };

////复制数组 Array.Clone()方法
          /*
          Array.Clone()返回值是Object,Array.Copy返回值为void
          Array.Clone()是非静态方法,Array.Copy为静态方法。
          Array.Clone()会创建一个新数组,Array.Copy方法必须传递阶数相同且有足够元素的已有数组。
         */

///*Array.Clone()用法*/
       //int[] intArray2 =
(int[])intArray1.Clone(); //复制数组intArray1并赋给一个新的数组;
这里需要说明的是,需要使用强制类型转换,原因在于Clone()返回的类         型为Object
      //foreach(int i in intArray2)
      //{
      //       Console.WriteLine(i +"");
     // }
     //Console.WriteLine(intArray2.Length);//输出新建的数组元素
     //Console.ReadKey();

int[] intArray3 =new int[11];

///*Array.CopyTo(Array, Int32)用法:从当前的一维数组中复制所有的元素到一个指定的一维数组的指定索引位置。索引由一个 32 位整数指定。*/
      //intArray1.CopyTo(intArray3,1);
     //foreach (int i in intArray3)
    //{
    //      Console.WriteLine(i + "");
     //}
    //Console.ReadKey();

///*Array.Copy(Array,Array,Int32)用法:从数组的第一个元素开始复制某个范围的元素到另一个数组的第一个元素位置。长度由一个 32 位整数指定。*/
    Array.Copy(intArray1,intArray3,5);//将数组intArray1中从一个位置的元素开始复制5个元素到数组intArray3中第一个位置处
    foreach (int i in intArray3)
    {
         Console.WriteLine(i + "");
   }
     Console.ReadKey();
    }

}

二、HashTable:哈希表

  1、在.NET frameworK中,HashTable是System.Collections命名空间提供的一个容器,用于处理和表现类似

keyvalue的键值对,其中key通常用来快速查找,key区分大小写;value用于存储对应key值。Hashtable中keyvalue键值对均为object类型,所以Hashtable可以支持任何类型的keyvalue键值对.

2、哈希表的简单操作

在哈希表中添加一个keyvalue键值对:HashtableObject.Add(key,value);
在哈希表中去除某个keyvalue键值对:HashtableObject.Remove(key);
从哈希表中移除所有元素:           HashtableObject.Clear();
判断哈希表是否包含特定键key:      HashtableObject.Contains(key);

下面的实例演示了哈希表(Hashtable)的概念:

using System;
using System.Collections; namespace CollectionsApplication
{
class Program
{
static void Main(string[] args)
{
Hashtable ht = new Hashtable(); ht.Add("001", "Zara Ali");
ht.Add("002", "Abida Rehman");
ht.Add("003", "Joe Holzner");
ht.Add("004", "Mausam Benazir Nur");
ht.Add("005", "M. Amlan");
ht.Add("006", "M. Arif");
ht.Add("007", "Ritesh Saikia"); if (ht.ContainsValue("Nuha Ali"))
{
Console.WriteLine("This student name is already in the list");
}
else
{
ht.Add("008", "Nuha Ali");
}
// 获取键的集合
ICollection key = ht.Keys; foreach (string k in key)
{
Console.WriteLine(k + ": " + ht[k]);
}
Console.ReadKey();
}
}
}

当上面的代码被编译和执行时,它会产生下列结果:

001: Zara Ali
002: Abida Rehman
003: Joe Holzner
004: Mausam Benazir Nur
005: M. Amlan
006: M. Arif
007: Ritesh Saikia
008: Nuha Ali

3、遍历哈希表

遍历哈希表需要用到DictionaryEntry Object,代码如下:
foreach(DictionaryEntry de in ht) fileht为一个Hashtable实例
{
   Console.WriteLine(de.Key);de.Key对应于keyvalue键值对key
   Console.WriteLine(de.Value);de.Key对应于keyvalue键值对value
}

4、对哈希表进行排序
  对哈希表进行排序在这里的定义是对keyvalue键值对中的key按一定规则重新排列,但是实际上这个定义是不能实现的,因为我们无法直接在Hashtable进行对key进行重新排列,如果需要Hashtable提供某种规则的输出,可以采用一种变通的做法:
ArrayList akeys=new ArrayList(ht.Keys); file别忘了导入System.Collections
akeys.Sort(); file按字母顺序进行排序
foreach(string skey in akeys)
{
   Console.Write(skey +":");
   Console.WriteLine(ht[skey]);排序后输出
}

http://www.cnblogs.com/newcapecjmc/p/7099947.html

C#中的集合(HashTable与Array类)【转】的更多相关文章

  1. [转帖]C#中字典集合HashTable、Dictionary、ConcurrentDictionary三者区别

    C#中字典集合HashTable.Dictionary.ConcurrentDictionary三者区别 https://blog.csdn.net/yinghuolsx/article/detail ...

  2. C#中的集合(HashTable与Array类)

    一.Array类 1.Array类的属性 序号 属性 & 描述 1 IsFixedSize 获取一个值,该值指示数组是否带有固定大小. 2 IsReadOnly 获取一个值,该值指示数组是否只 ...

  3. C#中字典集合HashTable、Dictionary、ConcurrentDictionary三者区别

    C#中HashTable.Dictionary.ConcurrentDictionar三者都表示键/值对的集合,但是到底有什么区别,下面详细介绍 一.HashTable HashTable表示键/值对 ...

  4. Java集合---Array类源码解析

    Java集合---Array类源码解析              ---转自:牛奶.不加糖 一.Arrays.sort()数组排序 Java Arrays中提供了对所有类型的排序.其中主要分为Prim ...

  5. C#部分---arraylist集合、arraylist集合中的object数据转换成int类string类等;间隔时间的表示方法;

    ArrayList和Array的区别: 相同点:1.两者都实现了IList.ICollection.IEnumerable接口:       2.两者都可以使用证书索引访问集合中的元素,包括读取和赋值 ...

  6. java中的集合操作类(未完待续)

    申明: 实习生的肤浅理解,如发现有错误之处.还望大牛们多多指点 废话 事实上我写java的后台操作,我每次都会遇到一条语句:List<XXXXX> list = new ArrayList ...

  7. Map集合、HashMap集合、LinkedHashMap集合、Hashtable集合、Collections工具类和模拟斗地主洗牌和发牌

    1.Map集合概述和特点 * A:Map接口概述  * 查看API可以知道:          * 将键映射到值的对象          * 一个映射不能包含重复的键          * 每个键最多 ...

  8. Java中各种集合(字符串类)的线程安全性!!!

    Java中各种集合(字符串类)的线程安全性!!! 一.概念: 线程安全:就是当多线程访问时,采用了加锁的机制:即当一个线程访问该类的某个数据时,会对这个数据进行保护,其他线程不能对其访问,直到该线程读 ...

  9. .NET中string[]数组和List<string>泛型的相互转换以及Array类的Sort()方法(转)

    从string[]转List<string>: " }; List<string> list = new List<string>(str); 从List ...

随机推荐

  1. 使用Vmware安装linux且配置终端可以连接虚拟机总结

    首先是下载一个linux镜像,我下载的是:ubuntu-16.04.2-desktop-amd64.iso 1.使用vmware安装linux,都使用默认的配置就行了,最多改一下主机名什么的,密码最好 ...

  2. 玩转SpringCloud(F版本) 二.服务消费者(1)ribbon+restTemplate

    上一篇博客有人问我,Springcloud系列会不会连载 ,大家可以看到我的标签分类里已经开设了SpringCloud专题,所以当然会连载啦,本人最近也是买了本书在学习SpringCloud微服务框架 ...

  3. 前端网页、php与mysql数据库字符编码(解决中文等乱码问题)

    web开发中经常涉及前端网页——php——mysql之间的数据交互,当数据只有英文时通常不会有什么问题,但一旦涉及中文,三个地方的某一处字符编码不一致(如,网页使用的时gbk而mysql使用utf-8 ...

  4. js 弹窗广告24小时显示一次

    弹窗24小时显示一次 https://www.w3cschool.cn/javascript/js-cookies.html 我们需要借助cookie来实现这个功能 function setcooki ...

  5. Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable(转)

    最近需要做些接口服务,服务协议定为JSON,为了整合在Spring中,一开始确实费了很大的劲,经朋友提醒才发现,SpringMVC已经强悍到如此地步,佩服! 相关参考: Spring 注解学习手札(一 ...

  6. Go内置库模块 flag

    import "flag" flag包实现了命令行参数的解析.每个参数认为一条记录,根据实际进行定义,到一个set集合.每条都有各自的状态参数. 在使用flag时正常流程: 1.  ...

  7. .NET 开源Protobuf-net从入门到精通

    <.NET 开源Protobuf-net从入门到精通>课程包含以下两个部分: 一..NET 开源Protobuf-net组件[数据存储篇] 本次分享课程包含以下干货知识点: 1.什么是Pr ...

  8. setTimeout 的黑魔法 【event loop】

    setTimeout,前端工程师必定会打交道的一个函数.它看上去非常的简单,朴实.有着一个很不平凡的名字--定时器.让年少的我天真的以为自己可以操纵未来.却不知朴实之中隐含着惊天大密.我还记得我第一次 ...

  9. After 2 years, I have finally solved my "Slow Hyper-V Guest Network Performance" issue. I am ecstatic.

    Edit - It should be known that I was initially researching this issue back in 2012 and the solution ...

  10. C#各种泛型集合体验

    本篇体验除Queue<T>和Stack<T>之外的其它泛型集合. SortedList<TKey, TValue> SortedList<TKey, TVal ...