C# List常用方法及Dictionary常用方法汇总
本文主要汇总了在开发过程中,使用List和Dictionary常用的方法,例如增、删、改、查、排序等等各种常用操作。
在平时的开发过程中,List和Dictionary是我们经常使用到的数据结构,而且由于本人记性又差有些方法长时间不用就都忘了,所以总结出此博客,用于记录和分享一下关于这两种数据结构的使用方法。
一、List
首先对于这些内容最权威和完整介绍的地方就是微软的官方文档,里面全面且详细的介绍了Lits的所有属性及方法,经常查看官方文档是一个非常好的习惯。本文将会总结出在日常开发过程中相对常用的一些方法同时会配上示例。
1.添加方法:
Add(T)---将对象添加到List结尾处。
AddRange(IEnumerable<T>)---将指定集合的元素添加到List末尾。
Insert(int32,T)---将元素T插入到List指定索引处。
InsertRange(int32,IEnumerable<T>)---将集合中的元素插入到List的指定索引处。
2.删除方法:
Clear()---从List中移除所有元素。
Remove(T)--从List中移除特定对象的第一个匹配项。(请注意值类型与引用类型)
RemoveAll(Preaicate<T>)---移除与指定谓词所定义的条件相匹配的所有元素。例:
static void Main(string[] args)
{
List<test> a = new List<test>();
for (int i = 0; i < 10; i++)
{
a.Add(new test(i, "张先生"));
} a.RemoveAll(x => x.ID > 5);
} public class test
{
public test(int a, string b)
{
ID = a;
Name = b;
}
public int ID { get; set; }
public string Name { get; set; }
}
结果:删除掉了ID大于5的全部元素。
RemoveAt(Int32)---移除List的指定索引处的元素。
RemoveRange(Int32,Int32)---从List中移除一系列元素。
3.搜索方法:
对于List的搜索方法建议使用Linq查询表达式或者Lambda表达式的方式,可以参考博文:C# LINQ查询表达式用法对应LAMBDA表达式
IndexOf(T)---搜索指定的对象,并返回整个List中第一个匹配项从零开始的索引。
IndexOf(T,Int32)---搜索指定对象并返回List中指定索引到最后一个元素这部分元素中第一个匹配项的从零开始的索引。
IndexOf(T,Int32,Int32)---搜索指定对象并返回List中从指定索引开始并包含指定元素的这部分元素中第一个匹配项的从零开始索引。
Find(Preaicate<T>)---搜索与指定谓词所定义的条件相匹配的元素,并返回整个List中的第一个匹配元素。
FindAll(Preaicate<T>)---搜索与指定谓词定义的条件匹配的所有元素。
FindIndex(Preaicate<T>)---搜索与指定谓词所定义的条件相匹配的元素,并返回整个 List<T> 中第一个匹配元素的从零开始的索引。
FindIndex(Int32,Preaicate<T>)---搜索与指定谓词所定义的条件相匹配的元素,并返回 List<T> 中从指定索引到最后一个元素的元素范围内第一个匹配项的从零开始的索引。
FindIndex(In32,Int32,Preaicate<T>)---搜索与指定谓词所定义的条件相匹配的一个元素,并返回 List<T> 中从指定的索引开始、包含指定元素个数的元素范围内第一个匹配项的从零开始的索引。例:
static void Main(string[] args)
{
List<test> a = new List<test>();
for (int i = 0; i < 10; i++)
{
a.Add(new test(i, "张先生"));
}
int res = a.FindIndex(x => x.ID == 3);
Console.WriteLine(res);
} public class test
{
public test(int a, string b)
{
ID = a;
Name = b;
}
public int ID { get; set; }
public string Name { get; set; }
}
结果:控制台打印的结果为3。
4.修改方法:
对于当前List是支持通过索引的方式进行修改操作的,操作方式类似于数组。
5.排序方法:请参考博文C#LINQ查询表达式用法对应LAMBDA表达式
Sort()---使用默认比较器对整个 List<T> 中的元素进行排序。
对于List<T>类型的List进行排序,如果想要使用Sort()方法的话,可以通过匿名委托的方式实现,个人建议实现排序功能使用Linq的方式最好。对于Sort方法可以进行一下了解。请参考C#里List.Sort的用法

public MainWindow()
{
InitializeComponent(); List<test> a = new List<test>(); a.Add(new test()
{
a = 1,
b = ""
});
a.Add(new test()
{
a = 4,
b = ""
});
a.Add(new test()
{
a = 2,
b = ""
});
a.Add(new test()
{
a = 3,
b = ""
});
a.Add(new test()
{
a = 9,
b = ""
});
a.Add(new test()
{
a = 7,
b = ""
});
a.Add(new test()
{
a = 6,
b = ""
}); a.Sort((left, right) =>
{
if (left.a > right.a)
return 1;
else if (left.a == right.a)
return 0;
else
return -1;
});
} class test
{
public int a;
public string b;
}
通过以上方式可以实现用Sort方法对List<T>类型进行排序。
6.其它方法:
Exists(Predicate<T>)---确定 List<T> 是否包含与指定谓词定义的条件匹配的元素。
Contains(T)---确定某元素是否在 List<T> 中。
以上两个方法使用代码如下:
public MainWindow()
{
InitializeComponent(); List<test> a = new List<test>(); a.Add(new test()
{
a = 1,
b = ""
}); a.Add(new test()
{
a = 4,
b = ""
}); var aa = new test()
{
a = 55,
b = "11"
};
a.Add(aa); var res1 = a.Exists(x => x.a == 55);
var res2 = a.Contains(aa);
} class test
{
public int a;
public string b;
}
运行结果,res1=true;res2=true
二、Dictionary
介绍最完整详细的仍然是官方文档。
1.添加方法
Add(TKey,TValue)---将指定的键和值添加到字典中。
TryAdd(Tkey,TValue)---尝试将指定的键和值添加到字典中。
2.删除方法
Clear()---将所有键和值从 Dictionary<TKey,TValue> 中移除。
Remove(TKey)---从 Dictionary<TKey,TValue> 中移除所指定的键的值。
Remove(TKey,TVlue)---从 Dictionary<TKey,TValue> 中删除具有指定键的值,并将元素复制到 value 参数。
3.搜索方法
Item[TKey]---获取或设置与指定的键关联的值。
可以使用Where方法实现,代码如下:
Dictionary<string, int> a = new Dictionary<string, int>();
a.Add("1", 1);
a.Add("2", 2);
a.Add("3", 3);
a.Add("4", 4);
var res = a.Where(x => x.Key == "3").ToDictionary(x=>x.Key,y=>y.Value);
运行结果res是字典类型"3",3
4.修改方法
Item[TKey]---获取或设置与指定的键关联的值。通常使用字典的Key来修改字典的Value
字典类型的Key一旦定义则无法修改,如果想修改只能删除重新添加。
5.排序方法
一般字典类型主要是使用Key来进行索引,所以对于字典这种类数据型进行排序是无意义的,所以字典本身也没有sort方法。
如果非要排序也是可以实现通过Linq即可实现,代码如下:
Dictionary<string, int> a = new Dictionary<string, int>();
a.Add("4", 1);
a.Add("1", 2);
a.Add("3", 3);
a.Add("5", 4); var res1 = a.OrderBy(x=>x.Key).ToDictionary(x => x.Key, x => x.Value);
var res2 = a.OrderByDescending(x=>x.Key).ToDictionary(x => x.Key, x => x.Value);
运行结果res1和res2分别实现按照字典key的升序排序和降序排序。
6.其它方法
ContainsKey(TKey)---确定是否 Dictionary<TKey,TValue> 包含指定键。
ContainsKey(TValue)---确定 Dictionary<TKey,TValue> 是否包含特定值。
共同提高,欢迎指正,交流。
C# List常用方法及Dictionary常用方法汇总的更多相关文章
- python字符串,列表,字典的常用方法
本篇内容 字符串的常用方法 列表的常用方法 字典的常用方法 字符串的常用方法 center 字符居中显示,指定字符串长度,填充指定的填充字符 string = "40kuai" p ...
- ExtJS基础知识总结:常用控件使用方式(一)
概述 最近一直在做相关ExtJs方面的项目,遇到了ExtJs使用方面的一系列问题,现在将使用技巧做个记录汇总,以便于下次能够快速使用.以下都是ExtJs控件的常用方法,做简单汇总,俗话说,好记星不如烂 ...
- Query 快速入门教程
Query 快速入门教程 http://www.365mini.com/page/jquery-quickstart.htm#what_is_jquery jquery常用方法及使用示例汇总 http ...
- 【学习笔记】【Foundation】字典
字典NSDictionary: 用于保存具有映射关系的数据:key-value: 创建NSDictionary的常用方法: dictionary: dictionaryWithContentsOfFi ...
- Java 相关注意事项小结
程序是一系列有序指令的集合: Java主要用于开发两类程序: 1)桌面应用程序2)Internet应用程序1,Java程序:三步走,编写--编译--运行:2,使用记事本开发:1)以.java为后缀名保 ...
- Java 基础功底
Java 基础语法特性: 首先了解并做好Java Web 开发环境配置(包含 JDK 的配置)是非常必要的.其中 CLASSPATH 的值开始必须包含 ".",否则用 javac ...
- C# 基础知识系列- 3 集合数组
简单的介绍一下集合,通俗来讲就是用来保管多个数据的方案.比如说我们是一个公司的仓库管理,公司有一堆货物需要管理,有同类的,有不同类的,总而言之就是很多.很乱.我们对照集合的概念对仓库进行管理的话,那么 ...
- JavaWeb_day06_Filter过滤器
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day06 request 对象常用方法 respon ...
- JavaScript基础(一)之语法、变量、数据类型
1.JavaScript语法 ①区分大小写 ②弱类型变量 ③每行结尾分号可有可无 ④括号用于代码块 ⑤注释有两种方式(单行和多行注释) 2.JavaScrip变量 ①用Var声明,不要初始化 ②可以在 ...
随机推荐
- js in depth: event loop & micro-task, macro-task & stack, queue, heap & thread, process
js in depth: event loop & micro-task, macro-task & stack, queue, heap & thread, process ...
- perl 在windows上获取当前桌面壁纸
更多 #!/usr/bin/perl # 在windows获取当前的桌面壁纸 # See also: https://www.winhelponline.com/blog/find-current-w ...
- WLAN-AC+AP射频一劳永逸的调优方式
AP射频调优组网图 射频调优简介 射频调优的主要功能就是动态调整AP的信道和功率,可以使同一AC管理的各AP的信道和功率保持相对平衡,保证AP工作在最佳状态.WLAN网络中,AP的工作状态会受到周围环 ...
- 死磕Spring之IoC篇 - BeanDefinition 的解析阶段(XML 文件)
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
- HTTP/1.1 有点慢,我想优化下!
问你一句:「你知道 HTTP/1.1 该如何优化吗?」 我想你第一时间想到的是,使用 KeepAlive 将 HTTP/1.1 从短连接改成长链接. 这个确实是一个优化的手段,它是从底层的传输层这一方 ...
- Javascript中的事件对象和事件类型
接上次看JS的事件冒泡和捕获,所以顺带就把事件相关的知识都看完好了 而且想到一个好的学习方法,第一天自己看,第二天把前一天学习的东西写下来,一方面可以当复习,一方面当重新整理并且分享 事件对象 事件处 ...
- SpringCloud Stream
1.介绍 官网:https://www.springcloud.cc/spring-cloud-dalston.html#_spring_cloud_stream 1.1定义 是一个构建消息驱动微服务 ...
- XSS跨站脚本攻击(1)
将跨站脚本攻击缩写为XSS,恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页面的时候,嵌入其中的Web里面的Script代码就会被执行,从而达到恶意攻击用户的目的. 反射型XSS 反射 ...
- 【重磅】iNeuOS工业互联平台,系统集成业务模型和WEB组态视图建模集成3D模型
目 录 1. 概述... 1 2. 平台演示... 2 3. 系统集成业务模型... 2 4. WEB组态视图建模集成3D模型... 3 5. ...
- 最新版大数据平台安装部署指南,HDP-2.6.5.0,ambari-2.6.2.0
一.服务器环境配置 1 系统要求 名称 地址 操作系统 root密码 Master1 10.1.0.30 Centos 7.7 Root@bidsum1 Master2 10.1.0.105 Cent ...