List集合使用泛型与不使用泛型有什么区别

List集合使用泛型与不使用泛型有什么区别,第1张

泛型其实还有一个通俗的名字:参数化类型(使用参数指明了该传什么类型)。就是明确指定了运行期集合中对象的类型。如果没有泛型,那我一切的对象直接使用Object和强制类型转换就解决了不是吗?但是这种有个问题,就是会在运行期出现随处可见的强制类型转换异常ClassCastException。而指定了参数化类型,是不是我们在编译期就进行检查了,传入List<String>类型,List里面只能放入String,你add其他类型编译不会通过的,就不要提运行期检查了。。。所以你提泛型搞不懂就理解为参数化类型这个事就完事了

List集合包括JavaList接口以及List接口的所有实现类。List集合中的元素允许重复,各元素的顺序放是对象插入的顺序,类似Java中的数组,用户可通过使用索引(元素在集合中的位置)来访问集合中的元素。

List的最重要的特征就是有序;它会确保以一定的顺序保存元素。List在Collection的基础上添加了大量方法,使之能在序列中间插入和删除元素。(只对LinkedList推荐使用。)

List可以制造ListIterator对象,你除了能用它在List的中间插入和删除元素之外,还能用它沿两个方向遍历List。

扩展资料

LinkedList:LinkedList是线程不安全的,对顺序访问进行了优化。在List中间插入和删除元素的代价也不高。随机访问的速度相对较慢。(用ArrayList吧。)

此外它还有addFirst(),addLast(),getFirst(),getLast(),removeFirst()和removeLast()等方法(这些方法,接口和基类均未定义),能把它当成栈(stack),队列(queue)或双向队列(deque)来用。

参考资料来源:百度百科-JAVA集合框架

参考资料来源:百度百科-JavaList集合

首先来个不安全的,但是短的版本:

foreach (object obj in mainList)

{

    dynamic x = obj;

    foreach (var item in x)

    {

        ConsoleWrite(item);

    }

}

因为这些类型没有公共的接口(object不算),所以比较安全的方式是用if else处理了,用Type就够了。

foreach (object obj in mainList)

{

    Type objType = objGetType();

    if (objType == typeof(List<int>))

    {

        List<int> o = obj as List<int>;

        foreach (var i in o)

            ConsoleWrite(i);

    }

    else if (objType == typeof(List<string>))

    {

        List<string> o = obj as List<string>;

        foreach (var s in o)

            ConsoleWrite(s);

    }

    else if (objType == typeof(double[]))

    {

        double[] o = obj as double[];

        foreach (var d in o)

            ConsoleWrite(d);

    }

    else if (objType == typeof(Dictionary<string, int>))

    {

        Dictionary<string, int> o = obj as Dictionary<string, int>;

        foreach (var p in o)

            ConsoleWrite(p);

    }

}

以上就是关于List集合使用泛型与不使用泛型有什么区别全部的内容,包括:List集合使用泛型与不使用泛型有什么区别、List集合是什么类型的集合、请教C#中通过反射获得泛型集合中所有值的问题。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9805912.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存