标签:style class blog code java http
1 //ArrayList是动态数组,方法有: 2 //Add----配合foreach一个个的添加 3 //AddRange-----以数组的形式,一次性添加 4 //Clear--------清空数组 5 //Count-----数组的长度 6 //Remove-----移除对应的元素 7 //RemoveAt------移除改索引对应的元素 8 //Contains------判断是否含所有某个值,返回Bool类型 9 //ToArray--------转换,再没关系(相当于复制一份)
泛型: 用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找房间号,而不是逐个房间找。(*)
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
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
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
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
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
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);
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
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
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 }
ArrayList2014年6月11日07:26:00,布布扣,bubuko.com
标签:style class blog code java http
原文地址:http://www.cnblogs.com/skyl/p/3781156.html