码迷,mamicode.com
首页 > 其他好文 > 详细

2016年10月16日--ArrayList集合、特殊集合

时间:2016-10-16 16:33:35      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

ArrayList集合

 

使用前引用
using System.Collections;


ArrayList集合
实例化、初始化
ArrayList al = new ArrayList();

ArrayList与Array的名字很相似。
相同点:
(1)两者都实现了IList、ICollection、IEnumerable接口;
(2)两者都可以使用整数索引访问集合中的元素,包括读取和赋值,且集合中的索引都从0开始。
不同点:
(1)ArrayList是集合,而Array是数组;
(2)ArrayList是具体类,Array是抽象类;
(3)数组必须在实例化时指定元素的数量,该数量一旦确定就不可以更改了,而ArrayList扩展了这一点,当实例化一个ArrayList实例时可以不指定集合元素数(有默认初始容量),当然你也可以指定初始容量;
(4)获取数组的元素数时使用Length属性,而获取ArrayList集合的元素数时使用Count属性;
(5)数组可以有多维,而ArrayList只能是一维。

 

数组(Array)定义时需要固定长度
ArrayList 不用

 

al.Add() 添加值
al[0] 只能修改

技术分享
ArrayList al = new ArrayList();
al.Add(4);
al[0] = 3;
Console.WriteLine(al[0]);

al.Count ArrayList集合长度
al.Inster(,) 在某个位置插入值

技术分享
ArrayList al = new ArrayList();
al.Add(1);
al.Add(2);
al.Insert(1, 3);
Console.WriteLine(al[1]);

al.Clear() 清空ArrayList集合
al.Clone() 克隆ArrayList集合
al.Contains() ArrayList 中是否包含某元素
al.IndexOf() 第一次出现该元素的索引号
al..LastIndexOf() 最后一次出现该元素的索引号
al.Remove() 移除第一次出现的该元素
al.RemoveAt() 移除指定所以位置的元素
al.Sort() 对ArrayList集合按照升序进行排列
al.Reverse() 翻转整个ArrayList集合

练习

System.Threading.Thread.Sleep(3000);//休眠
输入多个手机号码进入集合
进行3秒的随机滚动抽奖

 

技术分享
 1                 ArrayList al = new ArrayList();
 2                 Random ra = new Random();
 3                 int i = 0;
 4                 for (; ; )
 5                 {
 6                     i++;
 7                     Console.WriteLine("输入\"输入完成\"结束");
 8                     Console.Write("请输入第" + i + "个手机号:");
 9                     string s = Console.ReadLine();
10                     if (s.Contains("输入完成") || (s.Contains("") && s.Contains("") && s.Contains("") && s.Contains("")) || (s.Contains("") && s.Contains("")) || (s.Contains("") && s.Contains("")))
11                     {
12                         break;
13                     }
14                     else
15                     {
16                         al.Add(s);
17                     }
18                     Console.Clear();
19                 }
20                 Console.Write("输入完成,请按任意键抽奖...");
21                 Console.ReadKey();
22                 for (int j = 0; j < 30; j++)
23                 {
24                     Console.Clear();
25                     string str = (string)al[ra.Next(al.Count)];
26                     Console.SetCursorPosition((Console.WindowWidth - str.Length * 2) / 2, 0);
27                     Console.WriteLine(str);
28                     System.Threading.Thread.Sleep(100);
29                 }
30                 //作弊
31                 //Console.Clear();
32                 //Console.WriteLine("中奖啦就是你000010101010101011");
答案

输入姓名,语文,数学,英语

技术分享
                Console.Write("请输入人数:");
                int renshu = int.Parse(Console.ReadLine());
                ArrayList names = new ArrayList();
                int ii = 1;
                double yinyuzong = 0;
                for (int h = 0; h < renshu * 4; h += 4)
                {
                    Console.Write("请输入第" + ii + "个人的姓名:");
                    names.Add(Console.ReadLine());
                    Console.Write("请输入第" + ii + "个人的语文成绩:");
                    names.Add(double.Parse(Console.ReadLine()));
                    Console.Write("请输入第" + ii + "个人的数学成绩:");
                    names.Add(double.Parse(Console.ReadLine()));
                    Console.Write("请输入第" + ii + "个人的英语成绩:");
                    names.Add(double.Parse(Console.ReadLine()));
                    yinyuzong += (double)names[h + 3];
                    ii++;
                }
                foreach (object s in names)
                {
                    Console.Write(s + "\t");
                }
                Console.WriteLine("按照语文成绩排序");
                #region 语文
                for (int i = 0; i < renshu * 4; i += 4)               //冒泡排序,成绩由大到小排好
                {
                    for (int j = i + 5; j < renshu * 4; j += 4)
                    {
                        if ((double)names[i + 1] < (double)names[j])
                        {
                            string zhong = (string)names[i];
                            names[i] = names[j - 1];
                            names[j - 1] = zhong;

                            double chengji = (double)names[i + 1];
                            names[i + 1] = names[j];
                            names[j] = chengji;

                            chengji = (double)names[i + 2];
                            names[i + 2] = names[j + 1];
                            names[j + 1] = chengji;

                            chengji = (double)names[i + 3];
                            names[i + 3] = names[j + 2];
                            names[j + 2] = chengji;
                        }
                    }
                }
                foreach (object s in names)
                {
                    Console.Write(s + "\t");
                }

                Console.WriteLine();
                for (int i = 0; i < renshu * 4; i += 4)
                {
                    Console.Write("姓名:" + names[i]);
                    Console.Write("语文成绩:" + names[i + 1]);
                    Console.Write("数学成绩:" + names[i + 2]);
                    Console.WriteLine("英语成绩:" + names[i + 3]);
                }
                #endregion

                Console.WriteLine("语文成绩最高的是{0},语文成绩为{1},数学成绩为{2},英语成绩为{3}", names[0], names[1], names[2], names[3]);
                Console.WriteLine("按照数学成绩排序");
                #region 数学
                for (int i = 0; i < renshu * 4; i += 4)               //冒泡排序,成绩由大到小排好
                {
                    for (int j = i + 5; j < renshu * 4; j += 4)
                    {
                        if ((double)names[i + 2] < (double)names[j + 1])
                        {
                            string zhong = (string)names[i];
                            names[i] = names[j - 1];
                            names[j - 1] = zhong;

                            double chengji = (double)names[i + 1];
                            names[i + 1] = names[j];
                            names[j] = chengji;

                            chengji = (double)names[i + 2];
                            names[i + 2] = names[j + 1];
                            names[j + 1] = chengji;

                            chengji = (double)names[i + 3];
                            names[i + 3] = names[j + 2];
                            names[j + 2] = chengji;
                        }
                    }
                }
                //foreach (object s in names)
                //{
                //    Console.Write(s + "\t");
                //}
                Console.WriteLine();
                for (int i = 0; i < renshu * 4; i += 4)
                {
                    Console.Write("姓名:" + names[i]);
                    Console.Write("语文成绩:" + names[i + 1]);
                    Console.Write("数学成绩:" + names[i + 2]);
                    Console.WriteLine("英语成绩:" + names[i + 3]);
                }
                #endregion

                Console.WriteLine("数学成绩最高的是{0},语文成绩为{1},数学成绩为{2},英语成绩为{3}", names[0], names[1], names[2], names[3]);
                Console.WriteLine("英语平均分为:" + yinyuzong / renshu);
答案

 

 

特殊集合

Stack栈集合

//使用前引用
using System.Collections;


Stack栈集合
栈集合
先放进去的最后才能拿出来
实例化、初始化
Stack st = new Stack();


添加元素
st.Push(2);


弹出元素 弹出后不在存在于数组
只要使用就会从最后一个去除
st.Pop();


只取值不弹出
st.Peek();


遍历集合
foreach(int aa in st){ }

Queue队列集合

使用前引用
using System.Collections;


Queue队列集合
先放进去的先出


实例化、初始化
Queue que = new Queue();


添加元素
que.Enqueue(2);


弹出元素
从头弹出
que.Dequeue();

Hashtable哈希表集合

使用前引用
using System.Collections;


Hashtable哈希表集合
先进的后出,一个一个赋值,但只能一起取值


实例化、初始化
Hashtable hs = new Hashtable();


添加元素
hs.Add(1, "111");
hs.Add(2, "222");
hs.Add(3, "333");
hs.Add(4, "444");

 


单独取值 单取key  单取values
foreach(object aa in hs.Keys)
{
Console.WriteLine(aa);
}
foreach (object aa in hs.Values)
{
Console.WriteLine(aa);
}
同时取值
IDictionaryEnumerator ide = hs.GetEnumerator();
while(ide.MoveNext())
{
Console.WriteLine(ide.Key + "\t" + ide.Value);
}

2016年10月16日--ArrayList集合、特殊集合

标签:

原文地址:http://www.cnblogs.com/hqxc/p/5966626.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!