当前位置: 移动技术网 > IT编程>开发语言>.net > C#集合。

C#集合。

2019年03月15日  | 移动技术网IT编程  | 我要评论

下南洋三毛钱看,鬼打鬼之黄金道长,河南警察学院院长毛志斌

集合命名空间:

  using system.collections. 非泛型集合

  using system.collections.generic.  泛型集合

为什么要用集合:

  1、数组一旦声明长度就固定了。

  2、集合有很多方法可以用

  等

常用集合:

类似数组集合:arraylist  list<>

键值对集合:hashtable  dictionary<k v>

栈集合:stack

队列:queye

arraylist:

 class program
    {      
        static void main(string[] args)
        {
            arraylist arraylist = new arraylist();
            arraylist.add(1); //增加一个元素
            arraylist.addrange(new int[] { 2, 3 });//增加一个集合
            arraylist.insert(0, "开始:");//在指定位子插入一个元素
            arraylist.insertrange(4, new string[] { "一", "二", "三" });//指定位置插入集合
            arraylist.removeat(7);
            arraylist.clear();//清空集合
            for (int i = 0; i < arraylist.count; i++)
            {
                console.writeline(arraylist[i]);
            }
        }    
    }

remove()不是根据对象来判断的,而是根据值来判断。

contains()是否包含某个值,也是根据值来判断的。

集合转为数组:.toarray().

排序:  1、.sort() 升序  没有降序   可以用.reverse()颠倒位置实现。

    2、想让任何集合实现排序需要实现 icomparable接口 。

    3、直接调用sort是使用icompareble 接口的默认方式来排序。可以用sort的重载,使用自己的比较器。

hashtable:

简单添加和获取:

class program
    {      
        static void main(string[] args)
        {
            hashtable hashtable = new hashtable();
            hashtable.add("sam", "sam");
            hashtable.add("penny", new person() { name = "penny" });
            console.writeline(hashtable["sam"]);
            person penny = hashtable["penny"] as person;
            console.writeline(penny.name);

        }    
    }

键值对集合的键不能重复。

判断是否存在某个键:.contentskey()    是否存在某个值:.contentsvalue()

遍历hash table:

class program
    {      
        static void main(string[] args)
        {
            hashtable hashtable = new hashtable();
            hashtable.add("sam", "sam");
            hashtable.add("penny", "penny");
            //遍历键
            foreach (object item in hashtable.keys)
            {
                console.writeline("key:{0}----value:{1}",item,hashtable[item]);
            }
            //遍历值
            foreach (object item in hashtable.values)
            {
                console.writeline("value:{0}",item);
            }
            //遍历键值对
            foreach (dictionaryentry item in hashtable)
            {
                console.writeline("key:{0}---value{1}",item.key,item.value);
            }

        }    
    }

集合小练习:

两个arrrylist集合的并集。

class program
    {      
        static void main(string[] args)
        {
            arraylist a = new arraylist(new string[] {"a","b"});
            arraylist b = new arraylist(new string[] { "a", "b","c","d" });
            for (int i = 0; i <b.count; i++)
            {
                if (!a.contains(b[i]))
                {
                    a.add(b[i]);
                }
            }
            for (int i = 0; i < a.count; i++)
            {
                console.writeline(a[i]);
            }
        }    
    }

随机生成十个1-100之间的数放到arraylist中,这些数必须是偶数且不能重复。

class program
    {      
        static void main(string[] args)
        {
            arraylist arraylist = new arraylist();
            random random = new random();
            while (arraylist.count<10)
            {
                int r = random.next(1, 101);
                if (!arraylist.contains(r)&&((r%2)==0))
                {
                    arraylist.add(r);
                }
            }
            for (int i = 0; i < arraylist.count; i++)
            {
                console.writeline(arraylist[i]);
            }
        }    
    }

上面程序把random放循环外面效率更好,因为无参的random构造函数以系统时间为种子,而一遍循环完了以后时间还没来得及变,就会生成相同的数。

泛型集合: 

list<string> list = new list<string> () 

和 arraylist相比:

  数据类型固定,有更多的方法可以用。

dictionary<string, int> dic = new dictionary<string, int> ;

和hashtable相比:

  键和值都有类型约束。

遍历键值对:

 class program
    {      
        static void main(string[] args)
        {
            dictionary<string, int> dic = new dictionary<string, int>();
            dic.add("sam", 22);
            dic.add("penny", 23);
            foreach (keyvaluepair<string,int> item in dic)
            {
                console.writeline("keys:{0}--value:{1}",item.key,item.value);
            }
        }    
    }

判断字符串中每个字母出现的次数:

class program
    {      
        static void main(string[] args)
        {
            string str = "wellcome to china";
            dictionary<char, int> dict = new dictionary<char, int>();
            for (int i = 0; i < str.length; i++)
            {
                if (char.isletter(str[i]))
                {
                    if (dict.containskey(str[i]))
                    {
                        dict[str[i]]++;
                    }
                    else
                    {
                        dict.add(str[i], 1);
                    }
                }
            }
            foreach (keyvaluepair<char,int> item in dict)
            {
                console.writeline("{0}----{1}",item.key,item.value);
            }
        }    
    }

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网