c#中的List、ArrayList、Hashtable、Dictionary

//List
 List<string> list = new List<string>() { "lista", "listb", "lista" };
            list.Add("listc");

            List<string> list1 = new List<string>(list);

            //删除包含“a”的
            list1.RemoveAll(r => r.Contains("a"));
            List<string> list2 = new List<string>();
            //追加集合
            list2.AddRange(list1);

            //修改
            list[0] = "a1";
            //按值删除
            list.Remove("a1");
            //按索引删除
            list.RemoveAt(0);
            //插入值
            list.Insert(0, "a0");
            //插入集合
            list.InsertRange(1, list2);
            //从第2个值开始删除,删1个
            list.RemoveRange(1, 1);

 List<Obj> ob = new List<Obj>() { new Obj() { Code = "a", Name = "n" }, new Obj { Code = "a2", Name = "n2" } };
            ob.RemoveAt(0);
            ob.Add(new Obj() { Code = "a3", Name = "n3" });
            ob.RemoveAll(reA => reA.Name == "n2");
            //去重
            var c=s.Distinct().Select(ss=>ss);

//ArrayList
//ArrayList是.Net Framework提供的用于数据存储和检索的专用类,它是命名空间//System.Collections下的一部分。它的大小是按照其中存储的数据来动态扩充与收缩的。
//ArrayList的用法与List相同,只是ArrayList存的是Object类型,非类型安全,需要装箱拆箱,而List是泛型。
            List<string> list0 = new List<string>();
            list0.Add("ee");

            ArrayList aList = new ArrayList();
            aList.Add("a");
            aList.Add(1);
            aList.AddRange(aList);


 //Dictionary
            //它是键值对集合,存储的是泛型,是顺序存储的
            //在代码测试时发现key是整数型Dictionary的效率比Hashtable快,如果key是字符串型,Dictionary的效率没有Hashtable快
            Dictionary<string, string> dc = new Dictionary<string, string>();
            dc.Add("a1","a");
            dc.Add("b1","b");
            dc.Add("c1","c1");
            //根据键修改值,要是没有这个键则新增一个键值对
            dc["c"] = "dd";
            Console.WriteLine("根据建取得值:"+dc["a1"]);

            if (dc.ContainsKey("b1"))
            {
                Console.WriteLine("是否包含指定的键");
            }

            if (dc.ContainsValue("aa"))
            {
                Console.WriteLine("是否包含指定的值");
            }

            foreach (string k in dc.Keys)
            {
               Console.WriteLine("遍历键" + k);
            }

            foreach (string v in dc.Values)
            {
                Console.WriteLine("遍历值" + v);
            }

            foreach (KeyValuePair<string, string> kv in dc)
            {
                Console.WriteLine("遍历键与值:"+kv.Key+"+"+kv.Value);
            }
            //根据键删除键值对
            dc.Remove("c1");

           var v1=dc.Where(wh=>wh.Key=="a1");
             var v=dc.Select(se => se.Key);
            //将字典存到字典中
            Dictionary<string, Dictionary<string,string>> dc2 = new Dictionary<string, Dictionary<string,string>>();
            dc2.Add("d",dc);
            Console.WriteLine(dc2["d"]["a1"]);
            foreach(KeyValuePair<string, Dictionary<string, string>> kv in dc2)
            {
                foreach (KeyValuePair<string,string> kv2 in kv.Value)
                {
                    Console.WriteLine(kv2.Value);
                }
            }

//哈希表(Hashtable)
//Hashtable是System.Collections命名空间提供的一个容器
 //它是键值对存储数据,键与值都是object类型
            Hashtable ht = new Hashtable();
            ht.Add("a1","a");
            ht.Add("b1","b");
            ht.Add(3,"c");
            //根据键修改值,要是没有这个键则新增一个键值对
            ht[1] = "cc";

            //取得值,要是值得数据有int等多种类型,则报类型错误
            foreach (string s in ht.Values)
            {
                Console.WriteLine(s);
            }
            //取得键与值
            foreach (DictionaryEntry dce in ht)
            {
                Console.WriteLine(dce.Key+"+"+dce.Value);
            }
            Hashtable ht2 = new Hashtable();

            //将Hashtable添加到新的Hashtable中
            ht2.Add(1,ht);
            //删除
            ht.Remove("a1");
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值