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();
al[] = ;
Console.WriteLine(al[]);

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

ArrayList al = new ArrayList();
al.Add();
al.Add();
al.Insert(, );
Console.WriteLine(al[]);

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秒的随机滚动抽奖

                 ArrayList al = new ArrayList();
                 Random ra = new Random();
                 ;
                 for (; ; )
                 {
                     i++;
                     Console.WriteLine("输入\"输入完成\"结束");
                     Console.Write("请输入第" + i + "个手机号:");
                     string s = Console.ReadLine();
                     if (s.Contains("输入完成") || (s.Contains("输") && s.Contains("入") && s.Contains("完") && s.Contains("成")) || (s.Contains("完") && s.Contains("成")) || (s.Contains("结") && s.Contains("束")))
                     {
                         break;
                     }
                     else
                     {
                         al.Add(s);
                     }
                     Console.Clear();
                 }
                 Console.Write("输入完成,请按任意键抽奖...");
                 Console.ReadKey();
                 ; j < ; j++)
                 {
                     Console.Clear();
                     string str = (string)al[ra.Next(al.Count)];
                     Console.SetCursorPosition((Console.WindowWidth - str.Length * ) / , );
                     Console.WriteLine(str);
                     System.Threading.Thread.Sleep();
                 }
                 //作弊
                 //Console.Clear();
                 //Console.WriteLine("中奖啦就是你000010101010101011");

答案

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

                Console.Write("请输入人数:");
                int renshu = int.Parse(Console.ReadLine());
                ArrayList names = new ArrayList();
                ;
                ;
                ; h < renshu * ; h += )
                {
                    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 += (];
                    ii++;
                }
                foreach (object s in names)
                {
                    Console.Write(s + "\t");
                }
                Console.WriteLine("按照语文成绩排序");
                #region 语文
                ; i < renshu * ; i += )               //冒泡排序,成绩由大到小排好
                {
                    ; j < renshu * ; j += )
                    {
                        ] < (double)names[j])
                        {
                            string zhong = (string)names[i];
                            names[i] = names[j - ];
                            names[j - ] = zhong;

                            ];
                            names[i + ] = names[j];
                            names[j] = chengji;

                            chengji = (];
                            names[i + ] = names[j + ];
                            names[j + ] = chengji;

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

                Console.WriteLine();
                ; i < renshu * ; i += )
                {
                    Console.Write("姓名:" + names[i]);
                    Console.Write(]);
                    Console.Write(]);
                    Console.WriteLine(]);
                }
                #endregion

                Console.WriteLine(], names[], names[], names[]);
                Console.WriteLine("按照数学成绩排序");
                #region 数学
                ; i < renshu * ; i += )               //冒泡排序,成绩由大到小排好
                {
                    ; j < renshu * ; j += )
                    {
                        ] < (])
                        {
                            string zhong = (string)names[i];
                            names[i] = names[j - ];
                            names[j - ] = zhong;

                            ];
                            names[i + ] = names[j];
                            names[j] = chengji;

                            chengji = (];
                            names[i + ] = names[j + ];
                            names[j + ] = chengji;

                            chengji = (];
                            names[i + ] = names[j + ];
                            names[j + ] = chengji;
                        }
                    }
                }
                //foreach (object s in names)
                //{
                //    Console.Write(s + "\t");
                //}
                Console.WriteLine();
                ; i < renshu * ; i += )
                {
                    Console.Write("姓名:" + names[i]);
                    Console.Write(]);
                    Console.Write(]);
                    Console.WriteLine(]);
                }
                #endregion

                Console.WriteLine(], names[], names[], names[]);
                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集合、特殊集合的更多相关文章

  1. 2016年10月16日 星期日 --出埃及记 Exodus 18:27

    2016年10月16日 星期日 --出埃及记 Exodus 18:27 Then Moses sent his father-in-law on his way, and Jethro returne ...

  2. 2016年10月31日 星期一 --出埃及记 Exodus 19:16

    2016年10月31日 星期一 --出埃及记 Exodus 19:16 On the morning of the third day there was thunder and lightning, ...

  3. 2016年12月16日 星期五 --出埃及记 Exodus 21:11

    2016年12月16日 星期五 --出埃及记 Exodus 21:11 If he does not provide her with these three things, she is to go ...

  4. 2016年11月16日 星期三 --出埃及记 Exodus 20:7

    2016年11月16日 星期三 --出埃及记 Exodus 20:7 "You shall not misuse the name of the LORD your God, for the ...

  5. 2016年10月30日 星期日 --出埃及记 Exodus 19:15

    2016年10月30日 星期日 --出埃及记 Exodus 19:15 Then he said to the people, "Prepare yourselves for the thi ...

  6. 2016年10月29日 星期六 --出埃及记 Exodus 19:14

    2016年10月29日 星期六 --出埃及记 Exodus 19:14 After Moses had gone down the mountain to the people, he consecr ...

  7. 2016年10月28日 星期五 --出埃及记 Exodus 19:13

    2016年10月28日 星期五 --出埃及记 Exodus 19:13 He shall surely be stoned or shot with arrows; not a hand is to ...

  8. 2016年10月27日 星期四 --出埃及记 Exodus 19:12

    2016年10月27日 星期四 --出埃及记 Exodus 19:12 Put limits for the people around the mountain and tell them, `Be ...

  9. 2016年10月26日 星期三 --出埃及记 Exodus 19:10-11

    2016年10月26日 星期三 --出埃及记 Exodus 19:10-11 And the LORD said to Moses, "Go to the people and consec ...

随机推荐

  1. centos 查看是32位还是64位

    查看linux机器是32位还是64位的方法: file /sbin/init 或者 file /bin/ls/sbin/init: ELF 64-bit LSB executable, x86-64, ...

  2. shiro 更改登录的用户名

    ShiroUser user = (ShiroUser) SecurityUtils.getSubject().getPrincipal(); user.name = newName;

  3. JavaWeb学习笔记——javabean

  4. rem自适应布局的回顾总结

    使用rem实现自适应布局,应该算是当前移动前端的一大趋势,有些人对此还有点迷惑,搞不懂rem是如何实现自适应布局,如何根据设计稿来调整rem的值?rem布局如何用雪碧背景图片?rem一定要加载JS吗? ...

  5. 第1章 认识jQuery

    一.常用的JavaScript库对比 Prototype.Dojo.YUI.Mootools jQuery是一个轻量级的JavaScript库,大型开发必备——由John Resig于2006年创建. ...

  6. 虚拟机NUMA和内存KSM

    KSM技术可以合并相同的内存页,即使是不同的NUMA节点,如果需要关闭跨NUMA节点的内存合并,设置/sys/kernel/mm/ksm/merge_across_nodes参数为0.或者可以关闭特定 ...

  7. 正确运用synchronized和二次判断 实现多线程安全

    正确运用synchronized和二次判断 实现多线程安全,做出高效二符合预期的程序,特别是多个线程跑一个对象的时候,如下图所示:  测试代码如下: 特别注意if(shutdownRequested) ...

  8. Apache Maven 入门篇 ( 上 )

    作者:George Ma 写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这个想法. 这个入门篇分上下两篇.本文着重动手,用 mav ...

  9. 配置red hat的ip 自动地址

    三个文件: 需要配置的内容包括: nameserver dns, hostname和gateway, ip地址等等. /etc/resolv.conf中配置dns, 这个也可以在 sysconfig/ ...

  10. Python学习笔记(迭代、模块扩展、GUI 、编码处理等)

    PythonIDLE中的编码处理 http://www.tuicool.com/articles/NbyEBr 原文标题:Python中实际上已经得到了正确的Unicode或某种编码的字符,但是看起来 ...