List泛型集合常用方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace List泛型集合
{
class Program
{
static void Main(string[] args)
{
//ArrayList的好处是长度可变,可以往里面放任意类型的数据。但是当我们从ArrayList中取数据的时候,取出来的全部是Object类型的数据,最终还要将这个Object类型的数据转换成我们需要的类型数据。这期间就可以发生拆箱操作。费时间。而List泛型集合就能很好的解决这个问题。
//--------------------------------------Add(); AddRange()添加
//一旦你确定了泛型集合的类型,那么泛型集合里就只能存放该类型数据了。
//创建泛型集合对象
List<int> list = new List<int>();
list.Add(); //单List的类型是int的时候。Add(int item) Add方法的参数是int类型的。说明只能网里面存int类型的数据
List<string> listStr = new List<string>();
listStr.Add("abc");//单List的类型是string的时候。Add(string item) Add方法的参数是string类型的。说明只能网里面存string类型的数据
List<int[]> listArray = new List<int[]>(); //list里面接收的是一个int[]数组。
listArray.Add(new int[] { , , });
List<int[]> listIEnumerable = new List<int[]>();
//AddRange(IEnumerable<int[]> collection); AddRange()方法的参数接收的是一个List<int[]>的集合。
listIEnumerable.AddRange(new List<int[]>() { new int[] { , , }, new int[] { , , } });//
//--------------------------------------listInt() ;InsertRange()添加
List<int> listInt = new List<int>() { , , };
listInt.Insert(, ); //从listInt这个泛型集合索引下标的0处插入一个5
//InsertRange(int Index, IEnumerable<int> collection)
listInt.InsertRange(, new List<int> { , , });//从listInt这个泛型集合索引下标的1处插入一个List<int>集合
foreach (int i in listInt)
{
Console.WriteLine(i); //输出5,1,2,3
}
//--------------------------------------Remove();RemoveRange()删除
List<int> listInt2 = new List<int>() { , , , , , , , };
listInt2.Remove(); //Remove(int item) 删除listInt2集合中 “1” 这个元素。
listInt2.RemoveAt();//RemoveAt(int index) 删除listInt2集合中索引下标为0的这个元素
listInt2.RemoveRange(, );//RemoveRange(int index,int count) 删除一定范围内的元素。从索引下标0处开始删除,总共删除2个元素。
//RemoveAll(Predicate<int> math) //接收的是一个拉姆达表达式
listInt2.RemoveAll(p => p > && p <= ); //删除listInt2集合中 大于2并且小于等于5之间的元素
foreach (int i in listInt2)
{
Console.WriteLine(i);
}
//--------------------------------------Clear()清空所有元素
List<int> listInt3 = new List<int>() { , , , , , };
listInt3.Clear();
//--------------------------------------Contaion()包含
List<int> listInt4 = new List<int>() { , , , , , };
bool b = listInt4.Contains(); //Contains(int item) 检查listInt4泛型集合中是否包含了“2”这个元素。如果包含就返回true 不包含就返回false
//--------------------------------------First();如果集合没有任何元素,会抛异常
List<int> listInt5 = new List<int>() { , , , , , };
//假如listInt5这个泛型集合没有任何一项元素。那么调用First方法就会报错。提示:序列不包含任何元素
//First()方法的返回值为int类型
int t1 = listInt5.First();//返回listInt5这个泛型集合中第一个元素 t1的值为1。假如当listInt5这个泛型集合没有包含任何元素的时候,即:
//List<int> listInt5 = new List<int>() { };
//int t1 = listInt5.First(); 这里会报错:提示:序列不包含任何元素
// First()方法的返回值为int类型。返回满足拉姆达表达式的第一个元素
int t2 = listInt5.First(r => r > ); //t2的值为5
//FindAll()方法返回值为一个List<int> 泛型集合 。返回满足拉姆达表达式的所有元素
List<int> t3 = listInt5.FindAll(r => r < ); //t3的元素为 1,2,3,4
//--------------------------------------Single();如果集合没有任何元素,会抛异常,如果大于一个元素也会抛异常
List<int> listInt8 = new List<int>() { , , , , , };
//返回序列中满足指定条件的唯一元素;如果有多个这样的元素存在,则会引发异常
int t8 = listInt8.Single(r => r > ); //这里会抛异常:提示:序列包含一个以上的匹配元素。因为listInt8泛型集合里有4,5,6等元素是大于3的。
int tt8 = listInt8.Single(r => r > );//tt8的值为6。 不会抛异常。因为listInt8泛型集合里只有,6等元素是大于5的。
int tt88 = listInt8.Single(); //会抛异常:提示:序列包含一个以上的匹配元素。
//如果 List<int> listInt8 = new List<int>() { 1};
//int tt88 = listInt8.Single();泛型集合里只包含一个元素的时候,调用Single()方法就不会抛异常了。
//--------------------------------------FirstOrDefault(); //如果集合没有任何元素,不会抛异常
List<int> listInt5A = new List<int>() { , , , , , };
//假如listInt5A这个泛型集合没有任何一项元素。那么FirstOrDefault方法的默认返回值为0 而不会报错。
int tt1 = listInt5A.FirstOrDefault(); //返回listInt5A这个泛型集合中第一个元素 tt1的值为1。假如单listInt5A这个泛型集合里没有任何元素的时候 ,即:
//List<int> listInt5A = new List<int>(){};
//int tt1 = listInt5A.FirstOrDefault(); //tt1的值为默认为0 ;而不会报错。(这里之所以默认值为0是因为litInt5A是一个int类型的泛型集合。而int的默认值就是0 如果listInt5A是一个string类型的泛型集合的话。那么tt1的默认值就是null。因为string类型的默认值就是null)
//Console.WriteLine("tt1的值为{0}", tt1); //输出:tt1的值为0
int tt2 = listInt5A.FirstOrDefault(r => r > ); //返回满足括号中朗姆达表达式的第一个值:listInt5A这个泛型集合中只有3,4,5,6 等元素>2 ;所以既然是返回满足朗姆达表达式的第一个值。所以tt2的值为3
int tt3 = listInt5A.FirstOrDefault(r => r == );
Console.WriteLine("tt3的值为", +tt3);//输出: tt3的值为 即:tt3的值为空 因为listInt5A里没有8这个元素。所以找不到。既然找不到8这个元素,所以就什么都不会输出了。
//========================================================
//Find方法和FirstOrDefault方法效果相同,都是返回满足条件的第一个元素,如果没有该元素,则返回null。
//1>Find方法是.netFramework2.0的,而FirstOrDefault是3.5的。
//2>Find方法只能在List<T>上使用,而后者能更广泛应用在IEnemerable<T>上。
//>Find最终是建立在Array的查找之上,而在IEnemerable上的FirstOrDefault是使用foreach查找的。因此,Find速度会比FirstOrDefault快很多,据测试可能会快一倍以上。
//=========================================================
//--------------------------------------Find(); //如果集合没有任何元素,不会抛异常
List<int> listInt6 = new List<int>() { , , , , , , , , };
//假如listInt6这个泛型集合没有任何一项元素。那么Find方法的默认值返回值为0 而不会报错。
int t4 = listInt6.Find(r => r < ); //返回满足括号中朗姆达表达式的第一个元素 ;listInt6泛型集合中有1,2,3,4,5等元素是<6的 ,既然是返回满足朗姆达表达式的第一个值 所以:t4的值为1
int t5 = listInt6.Find(r => r > ); //listInt6泛型集合中有7,8,9等元素的值是>6的。既然是返回满足朗姆达表达式的第一个值 所以:t4的值为7
List<int> t6 = listInt6.FindAll(r => r > );//listInt6泛型集合中有3,4,5,6,7,8,9等元素的值是>2的。所有t6的元素为3,4,5,6,7,8,9
//--------------------------------------Any() 只要有一个元素满足条件就返回true。否则返回false
List<int> listInt7 = new List<int>() { , , , , , , , , };
//Any()检查listInt6泛型集合中的元素是否满足括号中的拉姆达表达式。只要有一个元素满足条件就返回true。否则返回false
bool b1 = listInt7.Any(r => r < ); //b1的值为true;因为listInt7中有1,2,3,4,5,6,7等元素小于8
bool b2 = listInt7.Any(r => r > ); //b2的值为true;因为listInt7中 元素9是大于8的
bool b3 = listInt7.Any(r => r > );//b3的值为false;因为listInt7中,没有任何一个元素大于10
//--------------------------------------ToArray() 将List<T>泛型集合转换成数组
List<int> listInt9 = new List<int>() { , , , , , };
int[] arr = listInt9.ToArray(); //将一个list<int> 泛型集合转换成一个int类型的数组;这里可以转换是因为,List<int>里存放的数据本身就是int类型的
//--------------------------------------ToList() 将数组转换成List<T>泛型集合
int[] arr1 = new int[] { , , , , , };
List<int> arrTolist = arr1.ToList(); //将一个int[]类型数组转换成List<int>泛型集合;这里可以转换是因为,List<int>里存放的数据是int类型的。而arr数组存放的数据也是int 类型的
//--------------------------------------Reverse() 元素反转
List<int> listInt10 = new List<int>() { , , , , , };
listInt10.Reverse(); //将listInt7这个泛型集合里的元素顺序反转。注意:是反转,不是降序排序
//--------------------------------------Sort() 升序排序
List<int> listInt11 = new List<int>() { , , , , , , , };
listInt11.Sort(); //将listInt8这个泛型集合里的元素按照升序排序
Console.WriteLine("---------------");
foreach (int i in listInt11)
{
Console.WriteLine(i); //输出:1,2,3,4,5,6,7,8
}
Console.ReadKey();
}
}
}
List泛型集合常用方法的更多相关文章
- 面向对象——is和as运算符、泛型集合 List<T>
二:is和as运算符: (1) is运算符 is 运算符用于检查对象是否与给定类型兼容.如果兼容返回true,否则返回false; 一般用于查看某个类是否实现了某个接口,或者是不是某个类的子类; 例如 ...
- Linq to 泛型集合查询集合包括大写M和年龄小于等于18
#region Linq to 泛型集合查询集合包括大写M和年龄小于等于18 //List<Student> list = new List<Student&g ...
- 02.List泛型集合
List泛型可以转换成数组 List泛型和数组的相同点: List泛型的数据类型必须是指定的,数组的数据类型也必须是指定的. List泛型和数组的不同点: List泛型的长度是随意的,而数组的长度必须 ...
- C# DataSet装换为泛型集合
1.DataSet装换为泛型集合(注意T实体的属性其字段类型与dataset字段类型一一对应) #region DataSet装换为泛型集合 /// <summary> /// 利用反射和 ...
- Linq操作非泛型集合
我们都知道,Linq能查询泛型集合,确切的说是:LINQ能实现查询泛型对象或者实现了IEnumerable.但是,很遗憾的是诸如ArrayList这样的非泛型集合并没有实现IEnumerable.那咋 ...
- c#利用泛型集合,为自己偷偷懒。
有人说"越懒"的程序员进步的越快!其实还挺有道理.亲身体验,从刚出来工作到现在,自己变"懒"了许多,但感觉写出来的代码确有了不少提升.刚开始啊,同样的代码,赋值 ...
- 2016年11月27日--面向对象:多态、类库、委托、is和as运算符、泛型集合
1.虚方法 virtual 重写 override 父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了virtual关键字的方法才可以被子类重写,子类重写父类的方法 ...
- GsonUtils.getGson().fromJson() 转泛型集合
List<QiTaFree> qiTaFreeList = GsonUtils.getGson().fromJson(exhiMain.getQiTaFressJson(), new Ty ...
- 快速入门系列--CLR--03泛型集合
.NET中的泛型集合 在这里主要介绍常见的泛型集合,很多时候其并发时的线程安全性常常令我们担忧.因而简述下.NET并发时线程安全特性,其详情请见MSDN. 普通集合都不支持多重并发写操作 部分支持单线 ...
随机推荐
- 不安装rpm包,取出rpm包里的文件
1.查看rpm包里的文件 [root@VM_166_132 ~]# rpm -qlp mysql5.6.29-1-3.x86_64.rpm |more/etc/ld.so.conf.d/mysql-5 ...
- hdu 3507 Print Article(斜率优化DP)
题目链接:hdu 3507 Print Article 题意: 每个字有一个值,现在让你分成k段打印,每段打印需要消耗的值用那个公式计算,现在让你求最小值 题解: 设dp[i]表示前i个字符需要消耗的 ...
- Jstorm调度定制化接口(0.9.5 及高版本)
从JStorm 0.9.0 开始, JStorm 提供非常强大的调度功能, 基本上可以满足大部分的需求. 在学习如何使用新调度前, 麻烦先学习 JStorm 0.9.0介绍 提供哪些功能 接口 设置每 ...
- Struts2 网站上来多少人
strut.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBL ...
- WPF 命令的简单总结
WPF的命令Command主要解决的问题,就是代码复用.一个很重要的应用意义,在于它将很多地方需要的调用的相同操作,以统一的方式管理,却又提供了不同的访问结果. 举个例子来说,我可能通过“点击butt ...
- C#中使用like和in参数传值
like 参数string strSql = "select * from Person.Address where City like '%'+ @add + '%'";SqlP ...
- HDU 2177 取(2堆)石子游戏 (威佐夫博弈)
题目思路:威佐夫博弈: 当当前局面[a,b]为奇异局时直接输出0 否则: 1.若a==b,输出(0 0): 2.将a,b不停减一,看能否得到奇异局,若有则输出: 3.由于 ak=q*k(q为黄金分割数 ...
- My网页
开始更新|Version:2.46|更新内容:/=====================================//1.新增秒低价次数//2.优化捉鬼停留过久的问题//3.优化其他任务上的效 ...
- kafka_2.11-0.10.0.0安装步骤
Kafka安装配置 我们使用5台机器搭建Kafka集群: 1. cluster-1-namenode-1-001 172.16.0.147 2. cluster-1-datanode-1- ...
- 第四天 内置函数2 随机码 装饰器 迭代器、生成器 递归 冒泡算法 JSON
关于函数的return li = [11,22,33,44] def f1(arg): arg.append(55) li = f1(li) print(li) 因为li = f1(li) 实际赋值的 ...