【c#编程技术总结】c#List排序补充
欢迎加入Unity业内qq交流群:956187480
qq扫描二维码加群
//方法一sort排序使用lambda表达式
List<int> list = new List<int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };list.Sort((x, y) => -x.CompareTo(y));//降序list.Sort((x, y) => x.CompareTo(y));//升序
//方法二简单sort排序
List<int> list = new List<int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };list.Reverse();// 反转顺序 list.Sort();// 升序排序
//方法三复杂对象
List<Student> list = new List<Student>();list.Sort(delegate (Student p1, Student p2){return p1.sno.CompareTo(p2.sno);//升序//return p1.sno == p1.sno ? 0 : (p1.sno > p1.sno) ? 1 : -1;});//list.Sort((x, y) => { return x.sno.CompareTo(y.sno); });
方法四OrdeOrderBy运用
Debug.Log("****顺序排列****");var tlist = list.OrderBy(t => t.sno).ToList();Debug.Log("****倒序排列****");var tlist = list.OrderByDescending(t => t.sno).ToList();
方法五 chon重写Comparable
public class Student: IComparable<Student>
{public int sno;public string name;public Student(int sno, string name){this.sno = sno;this.name = name;}//重写的CompareTo方法,根据Id排序public int CompareTo(Student other){if (null == other){return 1;//空值比较大,返回1}//return this.Id.CompareTo(other.Id);//升序return other.sno.CompareTo(this.sno);//降序}
}
或者
public int Compare(Student x, Student y){return x.sno.CompareTo(y.sno);//升序}
测试脚本如下
#region 模块信息
// **********************************************************************
// Copyright (C) 2019 Blazors
// Please contact me if you have any questions
// File Name: Test
// Author:
// WeChat||QQ:
// **********************************************************************
#endregion
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;public class Student: IComparable<Student>
{public int sno;public string name;public Student(int sno, string name){this.sno = sno;this.name = name;}//重写的CompareTo方法,根据Id排序public int CompareTo(Student other){if (null == other){return 1;//空值比较大,返回1}//return this.Id.CompareTo(other.Id);//升序return other.sno.CompareTo(this.sno);//降序}public int Compare(Student x, Student y){return x.sno.CompareTo(y.sno);//升序}}
public class Test : MonoBehaviour
{List<Student> targetList;// Use this for initializationvoid Start(){}private void Update(){//方法一if (Input.GetKeyDown(KeyCode.E))//sort排序使用lambda表达式{List<int> list = new List<int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };list.Sort((x, y) => -x.CompareTo(y));//降序list.Sort((x, y) => x.CompareTo(y));//升序}//方法二if (Input.GetKeyDown(KeyCode.W))//简单sort排序{List<int> list = new List<int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };list.Reverse();// 反转顺序 list.Sort();// 升序排序}//方法三if (Input.GetKeyDown(KeyCode.W))//简单sort排序{List<Student> list = new List<Student>();list.Sort(delegate (Student p1, Student p2){return p1.sno.CompareTo(p2.sno);});//list.Sort((x, y) => { return x.sno.CompareTo(y.sno); });}//方法三if (Input.GetKeyDown(KeyCode.Q))//OrderBy的运用{targetList = new List<Student>();for (int i = 0; i < 10; i++){targetList.Add(new Student(i, "小明" + i));}var tList01 = OutOfOrder(targetList);var tList02 = InOrder(tList01);var tList03 = OutOfOrder(tList02);InvertedOrder(tList03);}}private List<Student> InOrder(List<Student> list){Debug.Log("****顺序排列****");var tlist = list.OrderBy(t => t.sno).ToList();string str = ""; ;foreach (var item in tlist){str += item.sno;}Debug.Log("顺序后学号:" + str);return tlist;}private List<Student> InvertedOrder(List<Student> list){Debug.Log("****倒序排列****");var tlist = list.OrderByDescending(t => t.sno).ToList();string str = ""; ;foreach (var item in tlist){str += item.sno;}Debug.Log("倒序后学号:" + str);return tlist;}/// <summary>/// List乱序/// </summary>/// <param name="a"></param>/// <returns></returns>public List<Student> OutOfOrder(List<Student> a){Debug.LogError("****打乱列表****");List<Student> b = new List<Student>();int countNum = a.Count;//使用while循环,保证将a中的全部元素转移到b中而不产生遗漏while (b.Count < countNum){//随机将a中序号为index的元素作为b中的第一个元素放入b中int index = UnityEngine.Random.Range(0, a.Count - 1);//检测是否重复,保险起见if (!b.Contains(a[index])){//若b中还没有此元素,添加到b中b.Add(a[index]);//成功添加后,将此元素从a中移除,避免重复取值a.Remove(a[index]);}}string str = ""; ;foreach (var item in b){str += item.sno;}Debug.Log("乱序后学号:" + str);return b;}}
欢迎加入Unity业内qq交流群:956187480
qq扫描二维码加群
【c#编程技术总结】c#List排序补充相关推荐
- 提高C++性能的编程技术笔记:总结
<提高C++性能的编程技术>这本书是2011年出版的,书中有些内容的介绍可能已经过时,已不再适用于现在的C++编程中,但大部分内容还是很有参考意义的. 这里是基于之前所有笔记的简单总结,笔 ...
- 提高C++性能的编程技术笔记:设计优化/可扩展性/系统体系结构相关+测试代码
1. 设计优化 我们可以粗略地将性能优化分为两种类型:编码优化和设计优化.编码优化定义为不需要完整理解要解决的问题或者应用程序的执行流程就能实施的优化.通过定义看出,编码优化用于局部代码,同时该过程不 ...
- 程序猿充电的五本优质编程技术书
导语: 知识更新那么快,跟随不上怎么办? 碎片信息那么多,选择恐惧怎么办? 别担心,我用心挑选了几本编程技术书. 长期推送干货.职场心得,让你收获满满. 话休絮烦,点击关注,长期推送干货! 第一行代码 ...
- mfc编程vc6.0实现进程的创建和通信_免费送书:windows黑客编程技术详解
01 书怎么送 点赞并留言,关注在下面的公众号后台回复「抽奖」,弹出小程序后点击参与. 开奖时间是 7 月 7 号 20:00 ,一定要留意微信消息,如果你中奖了,请尽快在中奖页面提交收件人信息并备注 ...
- Sikuli -- 创新的图形化编程技术
简介: 本文将介绍由 MIT 研究团队发布的图形化编程技术 Sikuli.它以图像检索为基础,提供了一套基于 Jython 的脚本语言以及集成开发环境,使用者可利用屏幕截图直接引用 GUI 元素进行编 ...
- C语言编程>第二十一周 ⑥ 请补充main函数,该函数的功能是:从键盘输入一个字符串,即一个指定,然后把这个字符及其后面的所有字符全部删除,结果仍然保存在原串中。
例题:请补充main函数,该函数的功能是:从键盘输入一个字符串,即一个指定,然后把这个字符及其后面的所有字符全部删除,结果仍然保存在原串中. 例如:输入"1234567",指定字符 ...
- MPI并行编程: 矩阵乘法,积分计算,PSPR排序
简介 MPI(Message-Passing-Interface 消息传递接口)实现并行是进程级别的,通过通信在进程之间进行消息传递.MPI并不是一种新的开发语言,它是一个定义了可以被C.C++和Fo ...
- SpringAop篇 (2) Spring中的切面编程技术 AspectJ
介绍 : AOP(Aspect Orient Programming) 既为面向切面编程. 它可以说是OOP编程的一种扩展与补充,可以较为友好的处理不同模块之间具有横向相关性质的一类问题,比如日志管理 ...
- C语言编程>第二十一周 ② 请补充main 函数,该函数的功能是:把一维数组中的元素逆置,结果仍然保存在原数组中。
例题:请补充main 函数,该函数的功能是:把一维数组中的元素逆置,结果仍然保存在原数组中. 注意:仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容. 代码如下: #include& ...
- 游戏编程精粹1-6分类目录之通用编程技术部分
游戏编程精粹1-6分类目录之通用编程技术部分 ----------第一册------------------------- 第1章 通用编程技术 1.0 神奇的数据驱动设计(Steve Rabin) ...
最新文章
- IT人永远不老,老程序员价值何在?
- python随机生成奇数_python实现按照给定范围随机生成小数,偶数,奇数,整数,正态分布,均匀分布数据以及图片...
- C#异常Retry通用类
- 每日英语:Foreign Tourists Skip Beijing
- 盘点物联网网络和设备安全的五个误解
- 二叉搜索树+快速排序 查到文本中出现频率最多的100个词 【留学生作业】
- WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探
- 零基础学启发式算法(3)-禁忌搜索 (Tabu Search)
- 51Nod1344走格子
- Tomcat,servlet以及netty之间的简单区别
- java混淆工具zelix比较_Java混淆器和java混淆编译
- sam格式的结构和意义_NGS数据格式02-SAM/BAM最详细解读
- SDL_ttf库显示字体
- clientX,offsetX,pageX,screenX的异同以Chrome浏览器测试
- 3种方式构造HTTP请求详解(HTTP4)
- 如何利用Visio来绘制斜线!
- 【数据分析可视化】分组和透视功能实战-航班数据分析
- JRtplib开发笔记(二):JRtplib库编译、示例演示
- 简易计算器软件系统测试计划,Windows自带的计算器测试计划.doc
- 位图BitMap图像的读取与存储