List<T>类

List<T>类是ArrayList的泛型等效版本,两者功能相似。它实现了6个接口,实际上市对应的3对。

1、IEnumerable<T>和IEnumerable

2、ICollection<T>和ICollection

3、IList<T>和IList

  使用List<T>有很多好处。比如类型安全和可以存储引用类型以及值类型的数据,避免了使用ArrayList存储值类型数据时的装箱拆箱操作。以及在存储引用类型时的显示类型转化难操作,有一定的性能优势。

  List<T>类的一些重要特性如下:

  1、可以添加null值到集合中。

  2、允许集合中的元素重复。

  3、可以使用整数索引访问此集合中的元素,索引从零开始。

  在创建List<T>的对象时,没有指定List<T>列表的容量大小,则默认的容量大小是零,但是一旦有数据加入到列表,则列表的容量就会扩展到4;第5个加入时就会扩展到8;第9个加入就扩展到16,如此类推。列表容量总是成倍地增长。扩展时需要重新申请内存,这样会影响效率,如果事先知道元素的数目,或者可能的数目(尽量大的估算),建议使用一个初始化容量来实例化List<T>对象。

  构造方法:

  1、List();  使用默认的初始容量初始化一个空的实例。

  2、List(IEnumerable<T> collection)  创建一个实例,并从指定的集合中复制元素到新实例中。

  3、List(Int32)  使用指定的容量初始化一个空的实例。

 

  属性              说明

  Capacity             获取或设置该内部数据结构在不调整大小的情况下能够容纳的元素总数。   

Count              获取 List<(Of <(T>)>) 中实际包含的元素数。    

Item               获取或设置指定索引处的元素。

  方法

Add                将对象添加到 List<(Of <(T>)>) 的结尾处。

AddRange             将指定集合的元素添加到 List<(Of <(T>)>) 的末尾。

AsReadOnly            返回当前集合的只读 IList<(Of <(T>)>) 包装。

BinarySearch           已重载。 使用对分检索算法在已排序的 List<(Of <(T>)>) 或它的一部分中查找特定元素。

Clear               从 List<(Of <(T>)>) 中移除所有元素。

Contains             确定某元素是否在 List<(Of <(T>)>) 中。

ConvertAll<(Of <(TOutput>)>)  将当前 List<(Of <(T>)>) 中的元素转换为另一种类型,并返回包含转换后的元素的列表。

CopyTo              已重载。 将 List<(Of <(T>)>) 或它的一部分复制到一个数组中。

Exists                确定 List<(Of <(T>)>) 是否包含与指定谓词所定义的条件相匹配的元素。

Find               搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List<(Of <(T>)>) 中的第一个匹配元素。

FindAll              检索与指定谓词定义的条件匹配的所有元素。

FindIndex             已重载。 搜索与指定谓词所定义的条件相匹配的元素,返回 List<(Of <(T>)>) 或它的一部分中第一个匹配项的从零开始的索引。  FindLast             搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List<(Of <(T>)>) 中的最后一个匹配元素。

FindLastIndex          已重载。 搜索与指定谓词所定义的条件相匹配的元素,返回 List<(Of <(T>)>) 或它的一部分中最后一个匹配项的从零开始的索引。  ForEach             对 List<(Of <(T>)>) 的每个元素执行指定操作。

GetEnumerator          返回循环访问 List<(Of <(T>)>) 的枚举数。

GetRange            创建源 List<(Of <(T>)>) 中的元素范围的浅表副本。

IndexOf             已重载。 返回 List<(Of <(T>)>) 或它的一部分中某个值的第一个匹配项的从零开始的索引。

Insert              将元素插入 List<(Of <(T>)>) 的指定索引处。

InsertRange           将集合中的某个元素插入 List<(Of <(T>)>) 的指定索引处。

LastIndexOf           已重载。 返回 List<(Of <(T>)>) 或它的一部分中某个值的最后一个匹配项的从零开始的索引。

Remove             从 List<(Of <(T>)>) 中移除特定对象的第一个匹配项。

RemoveAll             移除与指定的谓词所定义的条件相匹配的所有元素。

RemoveAt             移除 List<(Of <(T>)>) 的指定索引处的元素。

RemoveRange           从 List<(Of <(T>)>) 中移除一定范围的元素。

Reverse             已重载。 将 List<(Of <(T>)>) 或它的一部分中元素的顺序反转。

Sort               已重载。 对 List<(Of <(T>)>) 或它的一部分中的元素进行排序。

ToArray             将 List<(Of <(T>)>) 的元素复制到新数组中。

TrimExcess            将容量设置为 List<(Of <(T>)>) 中的实际元素数目(如果该数目小于某个阈值)。

TrueForAll            确定是否 List<(Of <(T>)>) 中的每个元素都与指定的谓词所定义的条件相匹配。

        static void Main(string[] args)
        {
            List<string> list = new List<string>(4);
            list.Add("你好");
            list.Add("还不错");
            list.Add("对不起");
            list.Add("我爱你");
            foreach (string str in list)
            {
                Console.WriteLine(str);
            }

            Console.ReadKey();
        }
时间: 2024-11-08 16:33:23

List<T>类的相关文章

jvm系列(一):java类的加载机制

java类的加载机制 原文:http://www.cnblogs.com/ityouknow/p/5603287.html 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构.类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口. 类加载器并不需要等到某个

iOS -- SKSpriteNode类

SKSpriteNode类 继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKSpriteNode.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术

iOS -- SKScene类

SKScene类 继承自 SKEffectNode:SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKScene.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开

iOS -- SKPhysicsWorld类

SKPhysicsWorld类 继承自 NSObject 符合 NSCodingNSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKPhysicsWorld.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术文档.虽然已经审阅了本文档的技术准确性,但是它不是最终的版本.本机密信息仅适用于

C#嵌套类

嵌套类顾名思义就是类或者结构中定义的类 class Container { class Nested { Nested() { } } } <1>嵌套类的默认访问权限是private ,可以指定为public,protected,private,internal,protected internal.<2>嵌套类型可以访问外部类(包裹嵌套类的类),如果要访问外部类型,要把外部类通过构造函数传进一个实例<3>嵌套类中只能访问外部类中的静态成员,不能直接访问外部类的非静态成

一个实用的C#网页抓取类代码分享

一个实用的C# 网页抓取类 模拟蜘蛛,类中定义了超多的C#采集文章.网页抓取文章的基础技巧,下面分享代码: using System; using System.Data; using System.Configuration; using System.Net; using System.IO; using System.Text; using System.Collections.Generic; using System.Text.RegularExpressions; using Sys

类图(Rose) - Windows XP经典软件系列

最近开始了自己高级数据结构之旅,在这次旅行中,我将持续把一些高级的数据结构从理论到编码都过一遍,同时通过博客形式分享出来,希望大家指出不足之处! 二叉排序树是一种动态排序的数据结构,支持插入.删除.查找等操作,且平均时间复杂度为O(log(N)),但是普通二叉排序树不能保证树退化为一颗分支的情况,此时最坏情况下的时间复杂度为O(N).此时,平衡二叉树的产生了.平衡二叉树是一种动态调整平衡的数据结构,但理想的平衡二叉树很难,于是人们使用AVL.红黑树.Treap.伸展树等来替代平衡二叉树,这些数据

java 类对象使用

在学习反射机制时,总结一下获得类对象方式: 第一种方式:通过类本身来获得对象 Class<?> classname = this.getClass(); 或者this.class 第二种方式:通过子类的实例获取父类对象 ClassName cn = new ClassName(); UserClass = cn.getClass(); Class<?> SubUserClass = UserClass.getSuperclass(); 第三种方式:通过类名加.class获取对象 C

Python-class类的相关总结

在Python中,所有的数据类型都可以视为对象,自定义的对象数据类型就是面向对象中的类(class)的概念. 面向对象编程:object oriented programming简称OOP. 1 ###简单举例,以登记学生的姓名和成绩举例 2 #!/usr/bin/python 3 #-*- coding:utf-8 -*- 4 class Student(object): ##定义student类 5 def __init__(self, name, score): ##__init__可以绑

java String 类 基础笔记

字符串是一个特殊的对象. 字符串一旦初始化就不可以被改变. String s = "abc";//存放于字符串常量池,产生1个对象 String s1=new String("abc");//堆内存中new创建了一个String对象,产生2个对象 String类中的equals比较字符串中的内容. 常用方法: 一:获取 1.获取字符串中字符的个数(长度):length();方法. 2.根据位置获取字符:charAt(int index); 3.根据字符获取在字符串中