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

ArrayList2014年6月11日07:26:00

时间:2014-06-13 08:20:36      阅读:363      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   java   http   

bubuko.com,布布扣
1 //ArrayList是动态数组,方法有:
2 //Add----配合foreach一个个的添加
3 //AddRange-----以数组的形式,一次性添加
4 //Clear--------清空数组
5 //Count-----数组的长度
6 //Remove-----移除对应的元素
7 //RemoveAt------移除改索引对应的元素
8 //Contains------判断是否含所有某个值,返回Bool类型
9 //ToArray--------转换,再没关系(相当于复制一份)
bubuko.com,布布扣

泛型: 用ArrayList的麻烦的地方:数据放进去就不知道是什么类型的了;不能防止非法类型数据的放入;将ArrayList返回给其他函数(是object类型),会令调用者很困惑。要区分变量、返回值类型和实际对象类型的区别。IntArrayList(只能放int类型),StringArrayList又没完没了。

我们需要放指定类型数据的动态数组,所以就有了List<T>。List<int> 除此之外和ArrayList并无不同,<int>表示List中放的数据类型是int类型的,因为有声明类型时的约定,List<int> list=new List<int>();,因此所有方法的参数、返回值都是确定类型(int)的了。除此之外和ArrayList再无区别,都有Add,AddRange,Remove方法,除此之外,泛型集合提供的方法更多,Max、Min、Sort(分类)、Average等。

字典:Dictionary<K,V>,Key-value Pair 键值对。成语不可以重复,但是解释可以重复,所以Key是唯一的。---非泛型版本对应HashTable。

两种添加的区别:Add添加,dict.Add("key",value);如果key重复,则报错---------以索引的形式添加,dict["key"]=value;key值可以重复:如果key存在就update,不存在就insert。

Dictionary揭秘:查字典为什么能这么快?目录中记录了每个汉字的页码,查找的时候先看汉字的页码,再翻到指定的页就可以非常快速的找到词条了-----------Dictionary中有一个存储键值对的区域,采用一个固定算法(散列算法,非常快,可以认为时间复杂度为O(1) )根据key来计算这个kvp存放的地址,计算key的值的键值对应该存储的地址,将键值对放入指定的地址即可。查找的时候首先计算key的地址,就可以找到数据了。根据key找房间号,而不是逐个房间找。(*)

bubuko.com,布布扣
 1 #region HashSet<T>两个面试题
 2             HashSet<T>:不能盛放重复的数据,重复的数据只保留一份
 3 
 4             //1.面试题:取出整数数组中不重复数据的个数,{30,31,99,38,31,99,50}。
 5 
 6             int[] list = { 30, 31, 99, 38, 31, 99, 50 };
 7 
 8             // HashSet<T>:不能盛放重复的数据,重复的数据只保留一份。
 9             HashSet<int> set = new HashSet<int>();
10             foreach (int i in list)
11             {
12                 set.Add(i);
13             }
14             Console.WriteLine(set.Count());
15 
16 
17             //2.面试题:现有1~10共10个整数,已随机放入一个有8个元素的数组a[8]。要求找出没有被放入数组的那2个数。
18             //注意:程序不用实现自然数随机放入数组的过程,测试数据{9,8,5,3,1,10,2,7}。
19 
20             int[] nums = { 9, 8, 5, 3, 1, 10, 2, 7 };
21             HashSet<int> sets = new HashSet<int>();
22             foreach (int i in nums)
23             {
24                 sets.Add(i);
25             }
26             for (int i = 1; i < 11; i++)
27             {
28                 //Contains(T value)判断是否存在元素
29                 if (!sets.Contains(i))
30                 {
31                     Console.WriteLine(i);
32                 }
33             }
34 
35             #endregion
bubuko.com,布布扣
bubuko.com,布布扣
 1 #region 代码生成器基础
 2 
 3             string s1 = @"e:\a";
 4             string s2 = @"a";
 5 
 6             //Path.Combine()可以进行两个路径的拼接,省得自己处理\的问题
 7             string DirName = Path.Combine(s1, s2);
 8             string FileName = Path.Combine(DirName, "1.txt");
 9 
10             //Directory.CreateDirectory()如果文件夹不存在则创建
11             //是创建文件夹,不是文件
12             Directory.CreateDirectory(DirName);
13 
14             //StringBuilder类可以用来更高效的进行字符串拼接
15             StringBuilder sb = new StringBuilder();
16 
17             //AppendLine()方法会自动添加换行。
18             sb.AppendLine("hello world!");
19             sb.AppendLine("hell everyone!");
20 
21             //File.WriteAllText()将字符串写入文本文件中
22             File.WriteAllText(FileName, sb.ToString());
23 
24             #endregion
bubuko.com,布布扣
bubuko.com,布布扣
 1 #region AarryList
 2 
 3             //练习:有一个字符串是用空格分隔的一系列整数,写一个程序把其中的整数做如下重新排列打印出来:
 4             //奇数显示在左侧、偶数显示在右侧。比如‘2 7 8 3 22 9’显示成‘7 3 9 2 8 22’。更牛X的解法:排序。
 5             int[] lists = { 2, 7, 8, 3, 22, 9 };
 6             ArrayList lists2 = new ArrayList();
 7 
 8             foreach (int i in lists)
 9             {
10                 if (i % 2 == 1)
11                 {
12                     lists2.Add(i);//整除2余1是奇数
13                 }
14             }
15             foreach (int i in lists)
16             {
17                 if (i % 2 == 0)
18                 {
19                     lists2.Add(i);
20                 }
21             }
22             //foreach (int i in lists2)
23             //{
24             //    Console.WriteLine(i.ToString());
25             //}
26             for (int i = 0; i < lists2.Count; i++)
27             {
28                 Console.WriteLine(lists2[i].ToString());
29             }
30 
31             #endregion
bubuko.com,布布扣
bubuko.com,布布扣
 1 #region 泛型List<T>
 2 
 3             //案例:把分拣奇偶数的程序用泛型实现。分析算法复杂度。
 4 
 5             //泛型的ArrayList--------→List<T>.
 6             //<int>表示List中放的数据类型是int类型的.
 7             int[] nums = { 2, 7, 8, 3, 22, 9 };
 8             List<int> list = new List<int>();
 9 
10             foreach (int i in nums)
11             {
12                 if (i % 2 == 1)
13                     list.Add(i);
14             }
15             //foreach (int i in nums)
16             //{
17             //    if (i % 2 == 0)
18             //        list.Add(i);
19             //}
20             for (int i = 0; i < list.Count; i++)
21             {
22                 if (i % 2 == 0)
23                     list.Add(i);
24             }
25             for (int i = 0; i < list.Count; i++)
26             {
27                 Console.WriteLine(list[i].ToString());
28             }
29 
30 #endregion
bubuko.com,布布扣
bubuko.com,布布扣
 1 #region 计算字符串中每种字符出现的次数
 2 
 3             //练习:计算字符串中每种字符出现的次数(面试题)。
 4             //“Welcome to Chinaworld”,不区分大小写,打印“W2”“e 2”“o 3”……    
 5 
 6             //key为字符,value为出现的次数
 7             Dictionary<char, int> dict = new Dictionary<char, int>();
 8             string s = "Welcome to Chinaworld";
 9 
10             foreach (char c in s.ToLower())
11             {
12                 if (dict.ContainsKey(c))
13                 {
14                     //如果dict中含有这个字符就在出现次数上增加1
15                     dict[c] = dict[c] + 1;
16                 }
17                 else
18                 {
19                     //******第一次循环,肯定先进这个,将所有字母初始值设为1
20                     //如果不存在就初始化为1
21                     dict[c] = 1;
22                 }
23             }
24             foreach (char c in dict.Keys)
25             {
26                 // dict[c]---------通过Key查找Value
27                 int count = dict[c];
28                 Console.WriteLine("{0}={1}", c, count);
29             } 
30 
31#endregion
bubuko.com,布布扣
bubuko.com,布布扣
 1             //火星文翻译器2.0
 2             Dictionary<char, char> dic = new Dictionary<char, char>();
 3 
 4             //生成键值对应的字典
 5             for (int i = 0; i < Key.Length; i++)
 6             {
 7                 char cKey = Key[i];
 8                 char cValue = Value[i];
 9                 dic[cKey] = cValue;
10             }
11             string sHZ = "我已经不知道现在是白天还是黑天了,已经连续几十个小时在网吧度过,饭时就叫外卖,困了就在网吧的桌子上睡一会儿,醒了继续玩,早已经没有了时间的概念,连续逃课,夜不归寝。我现在精神很疲惫,在网吧卫生间照了一下镜子,忽然间感觉那个人好陌生,那个曾经十分向上、朝气蓬勃、胸怀志向的好孩子,已经堕落到了万劫不复的地狱底层。没有什么理由,只是在不知觉中,不断的欺骗自己,告诉自己这是最后一次,告诉自己明天是全新的一天,明天自己将会改变,不断的在后悔与痛苦中说服着自己,却一次又一次的向下走去,今天是父亲生日,父亲刚刚打过电话,说今天是什么日子,我才忽然想起,我说父亲生日快乐,儿子一切都好,父亲说只要你好好学习父亲就会很高兴,我说这没问题";
12 
13             string sHXW = "";
14 
15             foreach (char c in sHZ)
16             {
17                 //ContainsKey,判断是否存在这个Key.返回bool值
18                 if (!dic.ContainsKey(c))//处理字典中不存在的字符
19                 {
20                     sHXW = sHXW + c;
21                 }
22                 else
23                 {
24                     sHXW = sHXW + dic[c];//查找汉字对应的火星文
25                 }
26             }
27             Console.WriteLine(sHXW);  
bubuko.com,布布扣
bubuko.com,布布扣
 1#region 数据库中复杂的DBNull问题
 2 
 3            // 错误!因为在c#中int,bool,DateTime等值类型的数据是不可以为Null的
 4             string,Person为引用类型,可以为Null
 5             int i = null;
 6 
 7             //值类型,拷贝传递,不可以为null
 8             //引用类型,快捷方式传递,可以为null
 9 
10             //如果数据库里存的是Null,那么用dr["Adress"]取出来的数据是DBNull.Value
11             //这是ADO.NET对于C#中int,bool,DateTime等不为Null,而数据库中可为Null的一个权衡
12 
13             //判断字段值是否为Null的方法1和2
14             //1.第一个方法
15             if (dr["Adress"] == DBNull.Value)
16 
17             //2.直接判断当前列是否为空---------比较常用
18             if(dr.IsNull("Adress"))
19             {
20                 Person.Adress = null;
21             }
22             else
23             {
24                 Person.Adress =(string) dr["Adress"];
25             }
26  
27#endregion
bubuko.com,布布扣
bubuko.com,布布扣
 1 #region 可空类型
 2 
 3             //在int类型后面加?就成为了可空类型
 4             int? i = null;
 5 
 6             int? age = GetAge();
 7             Console.WriteLine(age.ToString());
 8 
 9             //判断可空类型的对象是否为Null
10             if (age.HasValue)
11             {
12                 int i2 = age.Value;
13 
14                 //两种方式都可以, 上一中更清楚
15                 //int i2 = (int)age;
16                 Console.WriteLine(i2);
17             }
18             else
19             {
20                 Console.WriteLine("null"); ;
21             }
22 
23 #endregion
bubuko.com,布布扣
bubuko.com,布布扣
 1         public static int? GetAge()
 2         {
 3             //偶数秒的话,返回20岁
 4             if (DateTime.Now.Second % 2 == 0)
 5             {
 6                 return 20;
 7             }
 8             else
 9             {
10                 return null;
11             }
12         }
bubuko.com,布布扣

 

ArrayList2014年6月11日07:26:00,布布扣,bubuko.com

ArrayList2014年6月11日07:26:00

标签:style   class   blog   code   java   http   

原文地址:http://www.cnblogs.com/skyl/p/3781156.html

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