S2_二本第三章使用集合组织相关数据(非泛型)

来源:互联网 发布:中国原油进口数据比较 编辑:程序博客网 时间:2024/06/07 12:40

非泛型集合

namespace _03_01集合初步
{
   public class Book
    {
        public string BookName { get; set; }
        public string BookAuthor { get; set; }
        public int BookPrice { get; set; }
        public Book() { }
        public Book(string bookname,string bookauthor,int bookprice )
        {
            this.BookName = bookname;
            this.BookAuthor = bookauthor;
            this.BookPrice = bookprice;
        }
    }
}


namespace _03_01集合初步
{
    class Program
    {
        static void Main(string[] args)
        {
           // ListBeginOneDemo();
            //测试foreach面试
            ForeachTest();

            if (list.Contains("韩寒"))
            {
          
                foreach (Book item in list)
                {
               
                    if (item.BookAuthor.Equals("韩寒"))
                    {
                        item.BookAuthor = "郭敬明";
                        break;
                    }
              
                }

            }
            else
            {

            }
            Console.WriteLine("===================修改===============");
            foreach (Book item in list)
            {
                Console.WriteLine(item.BookAuthor);
            }

        }
        static ArrayList list = new ArrayList();
        private static void ForeachTest()
        {
           
            Book book1=new Book("你是人间的四月天","林微因",50);
            Book book2 = new Book("艰难的抉择", "卡莉·菲奥莉娜", 60);
            Book book3 = new Book("三重门", "韩寒", 70);

            list.Add(book1);
            list.Add(book2);
            list.Add(book3);
            foreach (Object item in list)
            {
                Book book=(Book)item;
                Console.WriteLine(book.BookAuthor);
            }
        }

        private static void ListBeginOneDemo()
        {
            //集合分类:单列集合  +++++双列集合
            //导入命名空间的快捷键 Ctrl+.  切换到英文输入法
            ArrayList list = new ArrayList();
            //添加一个元素   "张靓颖   李小龙  凤姐"
            list.Add("张靓颖");
            list.Add("李小龙");
            list.Add("凤姐");

            //遍历,绑架了谁
            foreach (string item in list)
            {
                Console.WriteLine(item);
            }

            //修改,将凤姐 改成 宋小宝
            /*foreach (string item in list)
            {
                if (item.Equals("凤姐"))
                {
                    //foreach  只能用来遍历,不能修改值
                    item = "小宝";
                    break;
                }
            }*/

            for (int i = 0; i < list.Count; i++)
            {
                if (list[i].Equals("凤姐"))
                {
                    list[i] = "小宝";
                    break;
                }
            }

            Console.WriteLine("修改后。。。。。。。。。。。。。。。");
            foreach (string item in list)
            {
                Console.WriteLine(item);
            }





            //按索引删除
            Console.WriteLine("我是高贵的分割线==================按索引删除第一个======");
            list.RemoveAt(0);
            foreach (string item in list)
            {
                Console.WriteLine(item);
            }

            //释放一个人  凤姐
            list.Remove("凤姐");
            Console.WriteLine("我是高贵的分割线==================释放后======");
            foreach (string item in list)
            {
                Console.WriteLine(item);
            }
            //i just make a joke .释放 所有人
            list.Clear();
            Console.WriteLine("我是高贵的分割线==================释放所有======");
            foreach (string item in list)
            {
                Console.WriteLine(item);
            }

        }
    }
}

集合的自动扩容

namespace _03_02集合自动扩容
{
    class Program
    {
        static void Main(string[] args)
        {
            /*
             * 自动扩容:
             * 如果结合中一个元素都没有的话,Capacity为0,
             * 如果集合中出现第一个元素,分配4个空间,
             * 如果出现第5个元素的时候,可以容纳8个元素,
             * 每次扩容会扩成上次的2倍
             *
             *
             * 1.1那么,系统怎么知道何时扩容?在哪个方法中进行了扩容。
             * 解析:Add方法扩容,容量不够的时候
             *
             */
       
            int[] nums=new int[3];
            ArrayList list = new ArrayList();
         
            list.Add(1);
            list.Add(2);
            list.Add(2);
            list.Add(2);
            list.Add(3);

            foreach (Object item in list)
            {
              
                Console.WriteLine(item);
            }

            Console.WriteLine(list.Capacity + "   容量");  //  6
            Console.WriteLine(list.Count + " 真正存储元素个数");//5
        }
    }
}

集合的初始化器

namespace _03_03集合初始化器
{
  public  class Book
    {
        public string Author { get; set; }
    }
}


namespace _03_03集合初始化器
{
    class Program
    {
        static void Main(string[] args)
        {
            //对象初始化器
            Book book = new Book() {Author="微冷的雨" };
           /* ArrayList list = new ArrayList();
            list.Add(book);
            * */
            ArrayList list = new ArrayList()
            {
                book
            };
        }
    }
}


ArrayList单列集合的使用

namespace ArrayList使用
{
    class book
    {
        public string  anthony { get; set; }
    //    public book(string ay){
    //        anthony = ay;                                    
   
   
    //}
    }
}


namespace ArrayList使用
{
    class Program
    {
        static void Main(string[] args)
        {
            #region//arraylist
            ArrayList AL = new ArrayList();
            AL.Add("张三");
            AL.Add("李四");
            AL.Add("王二");
            foreach (string item in AL)
            {
                Console.WriteLine(item);
            }
            if (AL.Contains("张三"))
            {


                AL.RemoveAt(0);

            }
            foreach (string item in AL)
            {
                Console.WriteLine(item);
            }
            book b = new book() { anthony = "作者" };
            ArrayList al = new ArrayList() {
            b
           
           
            };
            #endregion
            Hashtable table = new Hashtable();
            table.Add("001","qqq");
            table.Add("002","www");
            table.Add("003","eee");
            //循环输出Hashtable的key和value
           
            foreach (object  item in table.Keys)
            {
                Console.WriteLine(item.ToString());
            }
            foreach (object item in table.Values)
            {
                Console.WriteLine(item);
            }
            foreach (DictionaryEntry item in table )
            {
                Console.WriteLine("{0}{1}",item.Key,item.Value);
            }
            //通过键(key)查询Hashtable的值( value)
            string s = (string )table["001"];
            Console.WriteLine(s);
           
        }
    }
}

Hashtabe双列集合的使用

namespace _03_04Dictionary双列集合
{
    class Program
    {
        static void Main(string[] args)
        {
            Hashtable table = new Hashtable();
            table.Add("CBC", "建设银行");
            table.Add("ABC", "中国农业银行");
            table.Add("ICBC","工商银行");
           

            //方式一:遍历 根据key遍历value ,Next key的 集合
            foreach (string key in table.Keys)
            {
                Console.WriteLine("key是"+key);
                //value 如何通过key  拿到  value!@#23###
                //索引器
                object value=table[key];
                Console.WriteLine("value是" + value.ToString());
            }
            Console.WriteLine("====================================");
            //方式二:直接遍历value
            foreach (string value in table.Values)
            {
                Console.WriteLine(value);
            }
            //03,key和Value一次遍历一个项目===(key+value)
            foreach (DictionaryEntry item in table)
            {
                Console.WriteLine(item.Key+" "+item.Value);
            }

        }
    }
}







0 0