
泛型其实还有一个通俗的名字:参数化类型(使用参数指明了该传什么类型)。就是明确指定了运行期集合中对象的类型。如果没有泛型,那我一切的对象直接使用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#中通过反射获得泛型集合中所有值的问题。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)