zoukankan      html  css  js  c++  java
  • C# ArrayList方法 Add AddRange BinarySearch Clear Contains CopyTo

    CopyTo讲了三种方法

    所以篇幅可能会比较长

      1         static void Main(string[] args)
      2         {
      3             //ArrayList方法
      4 
      5             //Add
      6             //将对象添加到ArrayList的结尾处
      7             int i, j, k;
      8             ArrayList a = new ArrayList() { "", "" };
      9             //给a添加对象
     10             a.Add("");
     11             a.Add("");
     12             /*
     13             foreach (int i in a )
     14             Console.WriteLine("{0}", i );
     15             这里报错了
     16             因为foreach不能对ArrayList集合进行操作
     17              */
     18 
     19             for (i = 0; i < a.Count; i++)
     20             {
     21                 Console.WriteLine("{0}", a[i]);
     22             }
     23             //输出结果表明,Add方法是直接将对象加到ArrayList的后面。
     24 
     25             Console.WriteLine("/////////////////////////////////");
     26 
     27             ArrayList b = new ArrayList() { };
     28             b.Add("");
     29             b.Add("");
     30             for (i = 0; i < b.Count; i++)
     31             {
     32                 Console.WriteLine("{0}", b[i]);
     33             }
     34             //这里我们也可以看出来,Add方法也可以直接对空的ArrayList添加值
     35             Console.WriteLine("/////////////////////////////////");
     36 
     37             //ArrayList.AddRage
     38             //将一个元素添加到ArrayList末尾,即一个集合
     39             a.AddRange(b);
     40             for (i = 0; i < a.Count; i++)
     41             {
     42                 Console.WriteLine("{0}", a[i]);
     43             }
     44             //从这里就看出来了,b已经被添加在了a的末尾了
     45 
     46 
     47             //Array.BinarySearch//二元检索法
     48             //在已经排序的ArrayList中检索对应元素。
     49             Console.WriteLine("/////////////////////////////////");
     50 
     51             a.Sort();//我们现在对a进行排序
     52             Console.WriteLine("{0}", a.BinarySearch(""));//4
     53             //返还的是一个正数,说明排序成功,BinarySearch也没有返还一个错误的值
     54             //那字符串是怎么排序的呢》
     55             //我们全部输出来看一下
     56             Console.WriteLine("/////////////////////////////////");
     57             for (i = 0; i < a.Count; i++)
     58             {
     59                 Console.WriteLine("{0}", a[i]);
     60             }
     61             //结果是:逼逼傻傻是我
     62 
     63             a.Reverse();//补充方法,Sort是正序排列,
              //而Reverse是反转序列,而不会像Sort一样进行排序
    64 Console.WriteLine("/////////////////////////////////"); 65 for (i = 0; i < a.Count; i++) 66 { 67 Console.WriteLine("{0}", a[i]); 68 } 69 70 //ArrayList.Clear 71 //清除集合内的所有元素 72 b.Clear(); 73 Console.WriteLine("/////////////////////////////////"); 74 for (i = 0; i < b.Count; i++) 75 { 76 Console.WriteLine("{0}", b[i]); 77 } 78 //因为b中的所有元素已经被清除了,所以就没有了内容,b.Count==0,for循环直接启动 79 80 //ArrayList.Contains 81 //检查某个元素是否在集合内,这里返还的是Boolen值 82 b.Contains(1); 83 Console.WriteLine("/////////////////////////////////"); 84 Console.WriteLine("b中有1吗?{0}", b.Contains(1));//False 85 Console.WriteLine("a中有逼吗?{0}", a.Contains(""));//True 86 87 //ArrayList.CopyTo 88 //复制某个集合的部分到某个集合里面 89 //格式 90 //ArrayList.CopyTo(Array1); 91 //ArrayList.CopyTo(Array1,5); 92 //ArrayList.CopyTo(0,Array1,0,5); 93 //我们先来用第一种 94 ArrayList c = new ArrayList() { 'a', 'b', 'c' }; 95 ArrayList cc = new ArrayList() { 'D', 'S', 'B' }; 96 char[] ccc = new char[] { '1','2','3' }; 97 98 c.CopyTo(ccc); 99 100 Console.WriteLine("/////////////////////////////////"); 101 for (i = 0; i <= ccc.GetUpperBound(0) ; i++) 102 { 103 Console.WriteLine("{0}", ccc[i]); 104 } 105 //这里从结果可以看出来了 106 //这里有几个小问题 107 /* 108 1.ArrayList.CopyTo(Array1),显然这是ArrayList的方法,但是括号内却不能是ArrayList 109 比如这么写的话c.CopyTo(cc);,CopyTo都不会被识别成一个方法,因为他里面是Array类而不是ArrayList类 110 2.Array类是抽象类,是数组类的父类,而作为子类的数组继承了Array的所有方法,所以不能直接定义Array类 111 比如Array ccc=new Array(){}; 112 Array ccc =new char[] {'a'}; 113 都是错误的 114 3.在做for循环的时候,i的自加判断的时候,用Array.GetUpperBound()方法的时候输出的是最后一个元素的位 115 因为计数是从0开始的,所以会少循环一位,所以一般写作i<Array1=GetUpperBound 116 但是在用ArrayList.Count的时候,这不是一个方法,而是ArrayList的属性,他输出的是ArrayList表示的长度 117 所以不会少循环,一般写作i<ArrayList.Count 118 */ 119 120 //第二种用法 121 c = new ArrayList() { 'a', 'b', 'c' }; 122 cc = new ArrayList() { 'D', 'S', 'B' }; 123 ccc = new char[] { '1', '2', '3' }; 124 125 // cc.CopyTo(ccc, 2); 126 //如果直接这么写,是一定会报错的 127 //格式中ArrayList.CopyTo(Array1,Int32);Int32表示的是从Array1第Int32位的元素开始执行Copy 128 //但是前提条件是Array1的空间足够,空间不足就会报错 129 //所以如果从第一个开始,就不会超过界限 130 131 cc.CopyTo(ccc,0); 132 Console.WriteLine("//////////////////////////////"); 133 for (i = 0; i <= ccc.GetUpperBound(0); i++) 134 { 135 Console.WriteLine("{0}",ccc[i]); 136 } 137 //这样就可以直接输出了 138 //一般来讲都会为后面留出空间 139 //比如说。 140 141 char[] cccc = new char[10]; 142 //cccc = new char[] { ',' }; 143 //这样的操作也是错误的,这样会导致,原先开的10的空间现在变成了1,所以这里要标明维位数来赋值 144 cccc[0] ='S'; 145 cccc[1] = 'B'; 146 cccc[7] = 'D'; 147 cccc[8] = 'X'; 148 149 Console.WriteLine("//////////////////////////////"); 150 for (i = 0; i <= cccc.GetUpperBound(0); i++) 151 { 152 Console.WriteLine("{0}", cccc[i]); 153 } 154 //从这里我们看出来了,输出结果我们没有用位数来赋值的地方,系统默认给了空,空间得以保留 155 //那当我们执行就不会有问题了 156 cc.CopyTo(cccc, 2); 157 Console.WriteLine("//////////////////////////////"); 158 for (i = 0; i <= cccc.GetUpperBound(0); i++) 159 { 160 Console.WriteLine("{0}", cccc[i]); 161 } 162 //而这里的复制粘贴不同于Struck的从前到后直接取代,而是只取代部分的内容。 163 164 //我们再来介绍最后一种方法 165 //ArrayList.CopyTo(Int32_0,Array1,Int32_1,Int32_2); 166 //Int32_0表示的是从源ArrayList中从0开始的索引的位数,说白了就是从第几位开始 167 //Int32_1表示的是从目标Array1中从0开始的索引位数,说白了也是从第几位开始 168 //Int32_2还是一样,表示复制多少位数 169 170 //我们来实际操作一下 171 char[] d = new char[15]; 172 d[0] = 'W'; 173 d[1] = 'S'; 174 d[2] = ''; 175 d[3] = ''; 176 d[7] = 'S'; 177 d[8] = 'B'; 178 179 cc.CopyTo(0, d, 2, 2); 180 Console.WriteLine("//////////////////////////////"); 181 for (i = 0; i <= d.GetUpperBound(0); i++) 182 { 183 Console.WriteLine("{0}", d[i]); 184 } 185 //这里我们设置了cc的起始位数,从第0位开始,也就是从头开始,然后对d设置的位数是从2开始, 186 //而我们只取了cc的两位,所以只复制了两个出来,其他均未改变。 187 188 }
    悟已往之不谏,知来者之可追
  • 相关阅读:
    15 Action View 以及监听 的使用
    15 ActionProvider代码例子
    15 ActionBar 总结
    15 Actionbar的显示和隐藏
    14 fragment传值
    14 fragment 创建
    14 Fragment 注意点
    14 Fragment 碎片总结
    GSON TypeToken 解决泛型问题
    Intent传递对象——Serializable和Parcelable区别
  • 原文地址:https://www.cnblogs.com/ljh-study/p/13657119.html
Copyright © 2011-2022 走看看