HashTable、List、ArrayList的经典使用和相互转换
1、添加引用 using System.Collections;
2、创建并添加数据
Hashtable hs = new Hashtable();
hs.Add("Name1", "lwj");
hs.Add("Name2", "wyp");
hs.Add("Name3", "zwl");
hs.Add("Name4", "zyc");
hs.Add("Name8", "wyw");
hs.Add("Name5", "wyw");
3、遍历哈希表中的 值Value
Console.WriteLine("---------遍历哈希表中的值----------");
|
4、遍历哈希表
Console.WriteLine("-----------遍历哈希表-------------");
foreach (DictionaryEntry de in hs)
{
Console.WriteLine("key = {0}; Value = {1}", de.Key, de.Value);
}
5、对HashTable排序之后输出,按Key排序
Console.WriteLine("-------哈希表按Key排序之后--------");
////哈希表排序, 按Key排序
ArrayList alist = new ArrayList(hs.Keys);
alist.Sort();
foreach (string obj in alist) // //遍历alist
{
Console.WriteLine("{0, -15} {1, -15}", obj, hs[obj]); //{0, -15} PadLeft
}
6、转换成List输出
Console.WriteLine("------------使用List之后-----------");
List<string> list = new List<string>();
foreach (DictionaryEntry de in hs)
{
list.Add(de.Value.ToString());
}
foreach (string obj in list)
{
Console.WriteLine(obj);//i就是下标
}
7、转换成Dictionary<object, object>之后进行遍历输出
Console.WriteLine("---------使用Dictionary之后--------");
Dictionary<object, object> myDic = new Dictionary<object, object>();
foreach (DictionaryEntry de in hs) //循环遍历HashTable 将其添加至 myDic
{
myDic.Add(de.Key, de.Value); // 这俩都是 object型的
}
//循环遍历输出 myDic
foreach (object obj in myDic)
{
Console.WriteLine(obj.ToString()); //[Name,wyw] 输出是这样的格式
}
//采用另一种输出
Console.WriteLine("--------Dictionary键值对输---------");
foreach (KeyValuePair<object, object> kvp in myDic)
{
Console.WriteLine("Key={0}, Value={1}", kvp.Key, kvp.Value); //获取键值对后,自定义输出
}
8、克隆HashTable 到另一HashTable并 遍历输出:
//此处写 添加 删除一些数据,以便验证
1 Console.WriteLine("------添加移除之后,遍历哈希表-----");
hs["Name0"] = "The First";
hs.Remove("Name8");
hs.Add("Name6", "add6");
foreach (DictionaryEntry de in hs)
{
Console.WriteLine("Key: {0, 15} Value{1, 15}", de.Key, de.Value);
} Console.WriteLine("--------克隆哈希表到hs2之后--------");
Hashtable hs2 = (Hashtable)hs.Clone(); //public virtual object Clone(); 创建 System.Collections.Hashtable 的浅表副本。
foreach (DictionaryEntry de in hs2)
{
Console.WriteLine("Key: {0, 15} Value{1, 15}", de.Key, de.Value);
} Console.WriteLine("----------哈希表清空之后-----------");
hs.Clear();
foreach (DictionaryEntry de in hs) //哈希表存在,但里面没数据,因此下列不执行
{
Console.WriteLine("Key: {0, 15} Value{1, 15}", de.Key, de.Value);
}
输出结果:

全部源代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections; namespace HashTable
{
class Program
{
static void Main(string[] args)
{
Hashtable hs = new Hashtable();
hs.Add("Name1", "lwj");
hs.Add("Name2", "wyp");
hs.Add("Name3", "zwl");
hs.Add("Name4", "zyc");
hs.Add("Name8", "wyw");
hs.Add("Name5", "wyw"); Console.WriteLine("-----------遍历哈希表-------------");
foreach (DictionaryEntry de in hs)
{
Console.WriteLine("key = {0}; Value = {1}", de.Key, de.Value);
} Console.WriteLine("---------遍历哈希表中的值----------");
////返回循环访问 System.Collections.Hashtable 的 System.Collections.IDictionaryEnumerator。
IDictionaryEnumerator emu = hs.GetEnumerator(); //// 遍历哈希表所有的键,读出相应的值
while (emu.MoveNext()) //如果枚举数成功地推进到下一个元素,则为 true;如果枚举数越过集合的结尾,则为 false。
{
string str = emu.Value.ToString();
Console.WriteLine(str);
} Console.WriteLine("-------哈希表按Key排序之后--------");
////哈希表排序, 按Key排序
ArrayList alist = new ArrayList(hs.Keys);
alist.Sort();
foreach (string obj in alist) // //遍历alist
{
Console.WriteLine("{0, -15} {1, -15}", obj, hs[obj]); //{0, -15} PadLeft
} Console.WriteLine("------------使用List之后-----------");
List<string> list = new List<string>();
foreach (DictionaryEntry de in hs)
{
list.Add(de.Value.ToString());
}
foreach (string obj in list)
{
Console.WriteLine(obj);//i就是下标
} Console.WriteLine("---------使用Dictionary之后--------");
Dictionary<object, object> myDic = new Dictionary<object, object>();
foreach (DictionaryEntry de in hs) //循环遍历HashTable 将其添加至 myDic
{
myDic.Add(de.Key, de.Value); // 这俩都是 object型的
}
//循环遍历输出 myDic
foreach (object obj in myDic)
{
Console.WriteLine(obj.ToString()); //[Name,wyw] 输出是这样的格式
}
//采用另一种输出
Console.WriteLine("--------Dictionary键值对输---------");
foreach (KeyValuePair<object, object> kvp in myDic)
{
Console.WriteLine("Key={0}, Value={1}", kvp.Key, kvp.Value); //获取键值对后,自定义输出
} Console.WriteLine("------添加移除之后,遍历哈希表-----");
hs["Name0"] = "The First";
hs.Remove("Name8");
hs.Add("Name6", "add6");
foreach (DictionaryEntry de in hs)
{
Console.WriteLine("Key: {0, 15} Value{1, 15}", de.Key, de.Value);
} Console.WriteLine("--------克隆哈希表到hs2之后--------");
Hashtable hs2 = (Hashtable)hs.Clone(); //public virtual object Clone(); 创建 System.Collections.Hashtable 的浅表副本。
foreach (DictionaryEntry de in hs2)
{
Console.WriteLine("Key: {0, 15} Value{1, 15}", de.Key, de.Value);
} Console.WriteLine("----------哈希表清空之后-----------");
hs.Clear();
foreach (DictionaryEntry de in hs) //哈希表存在,但里面没数据,因此下列不执行
{
Console.WriteLine("Key: {0, 15} Value{1, 15}", de.Key, de.Value);
} Console.ReadKey();
}
}
}
笔者在接触到了HashTable之后,上网搜索了一下具体用法,然后笔者就试着去联系以前 接触过的List、Diationary等,
试着将他们相互转换。以上仅供参考,方案并非最佳,希望能帮助大家!谢谢阅读与指正。
HashTable、List、ArrayList的经典使用和相互转换的更多相关文章
- hashmap和hashtable,arraylist和vector的区别
hashmap线程不安全,hashtable线程安全 hashmap允许使用 null 值和 null 键.(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同. ...
- HashMap、HashTable、ArrayList、LinkedList、Vector区别
HashTable和HashMap区别 ①继承不同. public class Hashtable extends Dictionary implements Map public class Has ...
- Vector & ArrayList Hashtable & HashMap ArrayList & LinkedList
1. Vector & ArrayList 1) Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的 ...
- List、dictionary、hashtable、ArrayList集合
集合的引用命名空间在 system.Collections下 1.为什么引入集合 因为数组长度是固定的,为了建立一个动态的"数组",所以引入了集合. 2.为什么引入ArrayLis ...
- ArrayList、HashTable、List、Dictionary的演化及如何选择使用
在C#中,数组由于是固定长度的,所以常常不能满足我们开发的需求. 由于这种限制不方便,所以出现了ArrayList. ArrayList.List<T> ArrayList是可变长数组,你 ...
- 利用ArrayList对Hashtable其进行排序
前言: 最近在使用Hashtable的时候发现一个问题:就是当你对Hashtable进行遍历的时候整个输出结果是毫无顺序的, 上网查了一下说是Hashtable有自己内部的排序机制,如果要自定义排序的 ...
- ArrayList、HashSet、HashTable、List、Dictionary的区别
在C#中,数组由于是固定长度的,所以常常不能满足我们开发的需求. 由于这种限制不方便,所以出现了ArrayList. ArrayList.List<T> ArrayList是可变长数组,你 ...
- 数组、ArrayList、HashTable
相同点:都可以存储一组数据 不同点: 1)数组,必须要先分配空间,存储数据固定 2)ArrayList,存储数据可以自由扩展 3)HashTable与ArrayList一样,但是它是有意义的,键值对形 ...
- C# ArrayList、HashSet、HashTable、List、Dictionary的区别
在C#中,数组由于是固定长度的,所以常常不能满足我们开发的需求. 由于这种限制不方便,所以出现了ArrayList. ArrayList.List<T> ArrayList是可变长数组,你 ...
随机推荐
- python文件目录操作
一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()2.返回指定目录下的所有文件和目 ...
- JQuery文件上传及以Base64字符串形式呈现图片
一:上传之 首先,你必然得有一个 file input,如下: <td> <img id="imgGif" style="display: no ...
- Guava Files 源码分析(二)
createTempDir()之后就没有什么有意思的函数了,基本上都是对Java IO函数操作的聚合,只看一个simplifyPath() /** * Returns the lexically cl ...
- [21] Mesh法线的生成算法
// 生成顶点法线 bool YfCalculateVertexNormal ( void* pNormalsBuffer, Yuint normalStriding, Yuint normalPos ...
- SQL Server中的database checkpoint
基于性能方面的考虑, 数据库引擎会在内存(buffer cache)中执行数据库数据页(pages)的修改, 不会再每次做完修改之后都把修改了的page写回到磁盘上. 更准确的说, 数据库引擎定期在每 ...
- android.net.Uri 简介 API
android.net.Uri 简介 public abstract class android.net.Uri extends Object implements Parcelable, Compa ...
- 说一说activity
activity与service,provider,receiver并称为 android的四大对象. 而activity,是展现界面的必不可少的组件.我这里有几个问题要问了,他是如何加载,他是如何进 ...
- Android -- ShortCut
添加 添加快捷方式是向桌面应用(launcher)发送相关action的广播: public static final String ACTION_ADD_SHORTCUT = "com.a ...
- shell more less cat
cat 连续显示.查看文件内容 more 分页查看文件内容 less 分页可控制查看文件内容 通俗点说: cat一次性把文件内容全部显示出来,管你看不看得清,显示完了cat命令就返回了,不能进行交互式 ...
- Mac Finder中如何复制当前完整路径
1.拖到命令行 2.在Finder中command+i 会弹出详细信息,然后[位置]处进行 copy 3.利用Automator,添加一个服务的快捷键. 转自:http://q.cnblogs.com ...