通过写一个Demo展示C#中多种常用的集合排序方法
不多说,程序很简单,就是将集合中的数据进行排序,但使用到的知识点还是比较多的,大牛勿喷,谨献给初学者!直接上程序吧!
namespace Demo
{
/// <summary>
/// Demo:使用不同排序方法对元素进行排序
/// </summary>
class Program
{
private static void Main(string[] args)
{ ArrayList arrayList = Product.GetArrayList();
List<Product> list = Product.GetList(); //1、使用继承IComparer接口的函数来进行排序
arrayList.Sort(new ProductCompare());
foreach (Product product in arrayList)
{
Console.WriteLine(product.ToString());
}
Console.WriteLine("---------------------------"); //2、使用继承IComparer<T>接口的函数来进行排序
list.Sort(new ProductCompareT());
foreach (Product product in list)
{
Console.WriteLine(product.ToString());
}
Console.WriteLine("---------------------------"); //3、使用委托来进行排序
list.Sort(delegate(Product x, Product y)
{
return x.Price.CompareTo(y.Price);
});
foreach (Product product in list)
{
Console.WriteLine(product.ToString());
} //4、使用Lambda表达式来进行排序;
list.Sort((x, y) => x.Price.CompareTo(y.Price));
foreach (Product product in list)
{
Console.WriteLine(product.ToString());
} //5、使用扩展方法来进行排序
foreach (Product product in list.OrderBy(p=>p.Price))
{
Console.WriteLine(product.ToString());
}
Console.ReadKey();
}
} public class Product
{
public string Name { get; set; } public decimal Price { get; set; } public static ArrayList GetArrayList()
{
return new ArrayList()
{
new Product {Name = "WindowsPhone", Price = 10m},
new Product {Name = "Apple", Price = 20m},
new Product {Name = "Android", Price = 5m}
};
} public static List<Product> GetList()
{
return new List<Product>()
{
new Product {Name = "WindowsPhone", Price = 10m},
new Product {Name = "Apple", Price = 20m},
new Product {Name = "Android", Price = 5m}
};
} public override string ToString()
{
return String.Format("{0}--{1}", Name, Price);
}
} /// <summary>
/// 使用IComparer对ArrayList进行排序
/// 显示实现Compare接口,常用ArrayList类型的集合来调用
/// </summary>
public class ProductCompare : IComparer
{
public int Compare(object x, object y)
{
Product first = x as Product;
Product second = y as Product;
if (first != null && second !=null)
{
return first.Price.CompareTo(second.Price);
}
else
{
return -;
}
}
} /// <summary>
/// 使用IComparer<Product>进行排序
/// 显式实现Compare接口,常用List<T>类型的集合来调用
/// </summary>
public class ProductCompareT : IComparer<Product>
{
public int Compare(Product x, Product y)
{
Product first = x as Product;
Product second = y as Product;
if (first != null && second != null)
{
return first.Price.CompareTo(second.Price);
}
else
{
return -;
}
}
}
}
通过写一个Demo展示C#中多种常用的集合排序方法的更多相关文章
- 【跟着子迟品 underscore】如何优雅地写一个『在数组中寻找指定元素』的方法
Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. ...
- Java基础-接口.编写2个接口:InterfaceA和InterfaceB;在接口InterfaceA中有个方法void printCapitalLetter();在接口InterfaceB中有个方法void printLowercaseLetter();然 后写一个类Print实现接口InterfaceA和InterfaceB,要求 方法 实现输出大写英文字母表的功能,printLowerca
#34.编写2个接口:InterfaceA和InterfaceB:在接口InterfaceA中有个方法void printCapitalLetter():在接口InterfaceB中有个方法void ...
- C#中遍历各类数据集合的方法总结
C#中遍历各类数据集合的方法总结: 1.枚举类型 //遍历枚举类型Sample的各个枚举名称 foreach (string sp in Enum.GetNames(typeof(Sample))) ...
- 【.NET】C#中遍历各类数据集合的方法
[.NET]C#中遍历各类数据集合的方法 C#中遍历各类数据集合的方法,这里自己做下总结: 1.枚举类型 //遍历枚举类型Sample的各个枚举名称 ...
- RxJava2 中多种取消订阅 dispose 的方法梳理( 源码分析 )
Github 相关代码: Github地址 一直感觉 RxJava2 的取消订阅有点混乱, 这样也能取消, 那样也能取消, 没能系统起来的感觉就像掉进了盘丝洞, 迷乱… 下面说说这几种情况 几种取消的 ...
- Java中8种常见的排序方法
排序方法的演示1)插入排序(直接插入排序.希尔排序)2)交换排序(冒泡排序.快速排序)3)选择排序(直接选择排序.堆排序)4)归并排序5)分配排序(基数排序)所需辅助空间最多:归并排序所需辅助空间最少 ...
- db2 查看进程 db2中的常用命令及使用方法
一 高(重要度) 1 启动一个db 2实例使用: net start instanceName 2 停止一个db 2实例使用: net stop instanceName 3 启动配置助手: db2= ...
- Javascript中,实现十大排序方法之一(冒泡排序及其优化设想)
冒泡排序的Javascript实现 首先定义一个取值范围在(0~100000)之间的随机值的长度为10万的数组, function bubbleSort(arr) { console.time('冒泡 ...
- JS中json数组多字段排序方法(解决兼容性问题)(转)
前端对一个json数组进行排序,用户需要动态的根据自己的选择来对json数据进行排序. 由于后台表设计问题所以不能用sql进行排序,这里用到了js的sort方法. 如果对单字段排序,那么很简单,一个s ...
随机推荐
- 文件描述符fd、文件指针fp和vfork()
1. fd:在形式上是一个非负整数.实际上他是一个索引值.指向kernal为每一个进程所维护的该进程打开文件的记录表. 当程序打开一个文件或者创建一个新文件的时候kernal向进程返回一个文件描述符. ...
- commons-text 生成指定长度的随机字符串
package com.skylink.junge.demo; import java.util.HashSet; import java.util.Set; import org.apache.co ...
- 【转】再有人问你Http协议是什么,把这篇文章发给他
一.HTTP简介 1.HTTP协议,即超文本传输协议(Hypertext transfer protocol).是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相 ...
- cad2012卸载/安装失败/如何彻底卸载清除干净cad2012注册表和文件的方法
cad2012提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装cad2012失败提示cad2012安装未完成,某些产品无法安装,也有时候想重新安装cad2012 ...
- WebRTC 学习之 Intel® Collaboration Suite for WebRTC 关键类整理
关键类整理 ---> ConferenceClient.ConferenceClientObserver. 一.ConferenceClient ConferenceClient是一个应用程序在 ...
- 学生成绩管理系统(C++指针、链表、文件及面向对象的运用)
学生成绩管理系统 功能页面显示: 实现源码: #include<iostream> #include<fstream> #include<cstring> # ...
- Pycharm中自动生成作者,日期等信息
初次安装使用PyCharm,在新建.py文件时会发现文件头并没有什么信息,因此,使用模板会比较方便.方法如下: 1.打开PyCharm,选择File--Settings 2.依次选择Editor--- ...
- .NET手记-为ASP.NET MVC程序集成Autofac
MVC Autofac总是会紧跟最新版本的ASP.NET MVC框架,所以文档也会一直保持更新.一般来讲,不同版本的框架集成Autofac的方法一般不变. MVC集成需要引用 Autofac.Mvc5 ...
- IOS 整体框架类图值得收藏
Cocoa框架是iOS应用程序的基础,了解Cocoa框架,对开发iOS应用有很大的帮助. 1.Cocoa是什么? Cocoa是OS X和 iOS操作系统的程序的运行环境. 是什么因素使一个程序成为Co ...
- Linux学习笔记之五————Linux常用命令之用户、权限管理
一.引言 用户是Unix/Linux系统工作中重要的一环,用户管理包括用户与组账号的管理. 在Unix/Linux系统中,不论是由本机或是远程登录系统,每个系统都必须拥有一个账号,并且对于不同的系统资 ...