调整数据列表内的顺序

简介:

 调整数据列表内的顺序,现写成扩展方法工具类

public  static  class  CollectionHelper
{
     //交换List项的顺序
     public  static  bool  ExchangeOrder<T>( this  IList<T> list, int  sourceID, int  newID)
     {
         if  (sourceID >= list.Count || sourceID < 0 || newID >= list.Count || newID < 0 || sourceID == newID) return  false ;
         try
         {
             var  temp = list[sourceID];
             list[sourceID] = list[newID];
             list[newID] = temp;
             return  true ;
         }
         catch  (Exception)
         {
             return  false ;
         }
     }
 
     /// <summary>
     /// 向上移动
     /// </summary>
     /// <typeparam name="T"></typeparam>
     /// <param name="list">The 数据列表 list</param>
     /// <param name="id">The 需要移动的id</param>
     /// <param name="num">The 移动的 位数. 默认为1, 几位就向上移动几位</param>
     /// <returns></returns>
     public  static  bool  MoveUpper<T>( this  IList<T> list, int  id, int  num = 1)
     {
         return  list.MoveItem(id, id - num);
     }
 
     //向下移动
     public  static  bool  MoveDown<T>( this  IList<T> list, int  id, int  num = 1)
     {
         return  list.MoveItem(id, id + num);
     }
 
     //移动到顶部
     public  static  bool  MoveTopper<T>( this  IList<T> list, int  id)
     {
         return  list.MoveItem(id, 0);
     }
 
     //移动到底部
     public  static  bool  MoveBottom<T>( this  IList<T> list, int  id)
     {
         return  list.MoveItem(id, list.Count -1);
     }
 
     /// <summary>
     /// 移动
     /// </summary>
     /// <typeparam name="T"></typeparam>
     /// <param name="list">数据列表</param>
     /// <param name="sourceID">原来的数据ID</param>
     /// <param name="newID">移动后数据ID</param>
     /// <returns></returns>
     public  static  bool  MoveItem<T>( this  IList<T> list, int  sourceID, int  newID)
     {
         if  (sourceID >= list.Count || sourceID < 0 || newID >= list.Count || newID < 0 || sourceID == newID) return  false ;
         try
         {
             var  temp = list[sourceID];
             list.RemoveAt(sourceID);
             list.Insert(newID, temp);
             return  true ;
         }
         catch  (Exception)
         {
             return  false ;
         }
     }
}

 

 

调用的方法:

class  CollectionSample
{
 
     public  void  Test()
     {
         List<Student> stuList = new  List<Student>();
         Student stu = new  Student(1, "zhangSan" );
         stuList.Add(stu);
         stu = new  Student(2, "LiSi" );
         stuList.Add(stu);
         stu = new  Student(3, "WangWu" );
         stuList.Add(stu);
         stu = new  Student(4, "ZhangLiu" );
         stuList.Add(stu);
         string  msg = string .Empty;
         foreach  (Student item in  stuList)
         {
             msg += String.Format( "ID: {0}, Name: {1} " , item.id, item.name);
         }
         //Exchange(stuList);
         Move(stuList);
     }
 
     private  static  void  Exchange(List<Student> stuList)
     {
         CollectionHelper.ExchangeOrder(stuList, 2, 1);
 
         string  newMsg = string .Empty;
         foreach  (Student item in  stuList)
         {
             newMsg += String.Format( "ID: {0}, Name: {1} " , item.id, item.name);
         }
     }
 
     private  static  void  Move(List<Student> stuList)
     {
         CollectionHelper.MoveUpper(stuList, 2, 3);
 
         string  newMsg = string .Empty;
         foreach  (Student item in  stuList)
         {
             newMsg += String.Format( "ID: {0}, Name: {1} " , item.id, item.name);
         }
     }
}

 

 

本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/archive/2012/06/18/2553360.html,如需转载请自行联系原作者


目录
相关文章
|
XML Java 开发者
Spring Boot中的bean注入方式和原理
Spring Boot中的bean注入方式和原理
1327 0
|
8月前
Dataphin免费试用指南
为您提供Dataphin快速上手操作指南,一起轻松构建数据
554 67
|
9月前
|
存储 分布式计算 Hadoop
【产品升级】Dataphin V4.4重磅发布:开发运维提效、指标全生命周期管理、智能元数据生成再升级
Dataphin V4.4版本引入了多项核心升级,包括级联发布、元数据采集扩展、数据源指标上架、自定义属性管理等功能,大幅提升数据处理与资产管理效率。此外,还支持Hadoop集群管理、跨Schema数据读取、实时集成目标端支持Hudi及MaxCompute delta等技术,进一步优化用户体验。
812 3
【产品升级】Dataphin V4.4重磅发布:开发运维提效、指标全生命周期管理、智能元数据生成再升级
|
搜索推荐 安全 物联网
智能家居技术的未来:集成化与个性化的融合
本文将深入探讨智能家居技术的发展趋势,特别是集成化和个性化如何成为未来智能家居系统设计的核心。文章将分析当前智能家居技术面临的挑战,并展示通过集成化提高系统效率、降低成本的方法。同时,讨论个性化服务在提升用户体验方面的重要性,以及如何通过数据驱动和人工智能技术实现这一目标。最后,文章将预测未来智能家居技术的发展方向,包括物联网设备的进一步整合、安全性的提升,以及智能家居技术在健康监测和环境可持续性方面的应用潜力。
327 1
|
Web App开发
PanTools v1.0.27 多网盘批量管理、遍历分享、转存、重命名、复制...
一款针对多个热门网盘的文件管理、批量分享、批量转存、批量重命名、批量复制、批量链接检测、跨账号移动文件、多账号文件搜索等,支持不同网盘的不同账号的资源文件操作。适用于网站站长、资源爱好者、网盘拉新等,对于管理名下具有多个网盘多个账号具有实用的效果。
439 0
|
前端开发 UED
探索前端工程化之路:Webpack、Rollup等构建工具对比与实践
在现代前端开发中,工程化成为不可或缺的一环。本文将深入探讨常用的前端构建工具Webpack和Rollup,并比较它们在实践中的优劣势。通过对功能、性能、插件生态等方面的评估,帮助读者选择适合自己项目需求的构建工具。
432 1
|
机器学习/深度学习 人工智能 达摩院
INTERSPEECH2023|达摩院语音实验室入选论文全况速览
INTERSPEECH2023|达摩院语音实验室入选论文全况速览
1630 1
|
SQL 存储 数据采集
Dataphin V3.5 新版本发布!10大能力项升级,覆盖多场景妙用,让智能数据建设与治理快速见效!
在满足多平台多引擎适配的基础上,DataphinV3.5新版本强化了规范建模,以及全域全链路资产管理能力,显著提升数据治理水平,在计算引擎利旧降本基础上满足企业多元化数智应用需求,为企业上云用数赋智夯实数字化能力底座。
Dataphin V3.5 新版本发布!10大能力项升级,覆盖多场景妙用,让智能数据建设与治理快速见效!
深入浅出阿里数据同步神器:Canal原理+配置+实战全网最全解析!
canal 翻译为管道,主要用途是基于 MySQL 数据库的增量日志 Binlog 解析,提供增量数据订阅和消费。 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。
|
机器学习/深度学习 存储 SQL
重要 | Spark和MapReduce的对比
【前言:笔者将分两篇文章进行阐述Spark和MapReduce的对比,首篇侧重于"宏观"上的对比,更多的是笔者总结的针对"相对于MapReduce我们为什么选择Spark"之类的问题的几个核心归纳点;次篇则从任务处理级别运用的并行机制方面上对比,更多的是让大家对Spark为什么比MapReduce快有一个更深、更全面的认识。通过两篇文章的解读,希望帮助大家对Spark和MapReduce有一个更深入的了解,并且能够在遇到诸如"MapReduce相对于Spark的局限性?"等类似的面试题时能够得到较好地表现,顺利拿下offer】
重要 | Spark和MapReduce的对比