• C#中的List<string>泛型类示例


    List<String> 和 ArrayList<String>的区别

     

    最近对这两个问题比较懵逼,关于ListArrayListList<String> list = new ArrayList<String>();

    好了,先搞明白List 和 ArrayList吧。

    List是一个接口,是Collection接口的一个子接口,是一个有序的集合。

    ArrayList是List的一个实现类,可以实现数组大小的可变,可以很方便的进行增加和删减数组内元素的操作。

    1 List<NameValuePair> paraList = new ArrayList<>();
    2 paraXmlList("cfgXml", dataxmlPath, paraList);
    3 paraList.add(new BasicNameValuePair("productid", productid));//(此处对List进行添加了数据)

    List list=new ArrayList();这种形式成为向上转型,ArrayList实现了List接口,可以看成是从List继承而来,一个子类的对象可以指向它父类。

    比如,狗从动物继承而来,狗是一只动物,所以狗的对象可以当作一只普通的动物来看待。

    然后再来说说List<String> list=new ArrayList<String>();为甚麼要声明为List 而不是ArrayList<String>?

    List是集合最大的父类,它包含了ArrayList。
    如果直接声明为ArrayList<String> list=new ArrayList<String>()这个也没有问题,但是不推荐,应为这样显得不是很灵活,因为List下除了ArrayList还有LinkList等他们都实现了List里面的方法。
    而声明成:List<String> list=new ArrayList<String>();这样的形式使得list这个对象可以有多种的存在形式

    比如要用链表存数据的话直接用LinkedList,使用ArrayList或者Vector直接通过list = new LinkedList<String>();就可以了,这样让list这个对象活起来了

    很多需求只能用一个list,内存有限,或者线程同步,不能有更多的集合对象,使得List总的接口来管理对象。

    C#中的List<string>泛型类示例

     

    在C#代码中使用一系列字符串(strings)并需要为其创建一个列表时,List<string>泛型类是一个用于存储一系列字 符串(strings)的极其优秀的解决办法。下面一起有一些List<string>泛型类的示例,一起来看看吧。

    List示例

      下面是一个使用C#创建一个新的一系列字符串的列表的示例,利用foreach语句循环使用其每一个字符串。请注意在代码片段的顶部添加所需的命名空间:“using System.Collections.Generic;”,List是该命名空间里的一个泛型类型。

    List<string>示例代码:

    复制代码
     1 using System;
    2 using System.Collections.Generic;
    3
    4 class Program
    5 {
    6 static void Main()
    7 {
    8 List<string> cities = new List<string>(); // List of city names
    9 cities.Add("San Diego"); // String element 1
    10 cities.Add("Humboldt"); // 2
    11 cities.Add("Los Angeles"); // 3
    12 cities.Add("Auburn"); // 4
    13
    14 // Write each city string.
    15 foreach (string city in cities)
    16 {
    17 Console.WriteLine(city);
    18 }
    19 Console.ReadKey();
    20 }
    21 }
    复制代码

    输出:

    San Diego
    Humboldt
    Los Angeles
    Auburn

      注意代码中的尖括号(angle brackets)。在声明语句中尖括号<和>将string类型围在中间,这意味着List仅能够存储String类型的元素。string类型可以是小写字体的string,也可以使大写字体的String。

      使用Collection实现初始化示例

      C#语法允许以一种更加清晰的办法来实现List的初始化。使用collection进行初始化,必须使用大括号{}包围作初始化用的值。下面示例中的注释说明了在执行该程序时编译器所使用的代码。

    List初始化示例代码:

    复制代码
     1 using System;
    2 using System.Collections.Generic;
    3
    4 class Program
    5 {
    6 static void Main()
    7 {
    8 List<string> moths = new List<string>
    9 {
    10 "African armyworm",
    11 "Mottled pug",
    12 "Purple thug",
    13 "Short-cloaked moth"
    14 };
    15 // The List moth contains four strings.
    16 // IL:
    17 //
    18 // List<string> <>g__initLocal0 = new List<string>();
    19 // <>g__initLocal0.Add("African armyworm");
    20 // // ... four more Add calls
    21 // List<string> moths = <>g__initLocal0;
    22 }
    23 }
    复制代码

      解释说明。可以看到字符串列表的初始化编译为调用一系列的Add方法。因此,二者执行起来是相似的。然而,不要超出你的需要来过多的初始化List,因为调用Add方法会增加你的资源消耗。

      Var示例:

      下面是一个关于var关键字如何与List<string>一起使用的示例。var是一个隐式关键字,它与使用全类型名称编译的结果是相同的(var是C# 3.0中新增加的一个关键字,在编译器能明确判断变量的类型时,它允许对本地类型进行推断)。

    使用var关键字的List示例:

    复制代码
     1 using System;
    2 using System.Collections.Generic;
    3
    4 class Program
    5 {
    6 static void Main()
    7 {
    8 var fish = new List<string>(); // Use var keyword for string List
    9 fish.Add("catfish"); // Add string 1
    10 fish.Add("rainbowfish"); // 2
    11 fish.Add("labyrinth fish"); // 3
    12 fish.Sort(); // Sort string list alphabetically
    13
    14 foreach (string fishSpecies in fish)
    15 {
    16 Console.WriteLine(fishSpecies);
    17 }
    18 Console.ReadKey();
    19 }
    20 }
    复制代码

    输出:

    catfish
    labyrinth fish
    rainbowfish

      注意。List<string>的Sort方法默认按照字母顺序对其字符串进行排序。它使用替换的方式实现排序,意味着你不必为排序的结果分配新的存储空间。

      总结

      上面是字符串类型的List的一些示例。因为C#语言中设计了泛型类型,这些示例中没有花费较大的装箱与拆箱过程,因此,这里的List与 ArrayList相比,在任何情况下其效率都要高一些。在这篇文章里,我们学习了声明并使用collection对字符串类型的List进行初始化,还 学习了其Sort方法,最后还有一个使用List作为参数的示例程序。

  • 相关阅读:
    java多线程的基本介绍
    Fragment基本介绍
    TypedValue.applyDimension的使用
    获取当前进程名并判断是否是主进程
    Bitmap类、BitmapFactory及BitmapFactory类中的常用方法
    Android 动态改变图片的颜色值
    Glide4.0使用
    Android在一个app中启动另一个App
    使用Recyclerview实现图片水平自动循环滚动
    Java变量的修饰符
  • 原文地址:https://www.cnblogs.com/zhou0818/p/10442467.html
Copyright © 2020-2023  润新知