2018-03-13 C# Queue、二分查找算法、Bootstrap3 datetimepicker控件的使用、【C#】List<T>对象的深复制

第一组:刘聪 C# Queue

1、Queue定义

队列(Queue)代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。

2、优点

a、能对集合进行顺序处理(先进先出)。
b、能接受null值,并且允许重复的元素。

3、 Queue的构造器
  • Queue ()
    初始化 Queue 类的新实例,该实例为空,具有默认初始容量(32)并使用默认增长因子(2.0)。
  • Queue (ICollection)
    初始化 Queue 类的新实例,该实例包含从指定集合复制的元素,具有与所复制的元素数相同的初始容量并使用默认增长因子。
  • Queue (Int32)
    初始化 Queue 类的新实例,该实例为空,具有指定的初始容量并使用默认增长因子。
  • Queue (Int32, Single)
    初始化 Queue 类的新实例,该实例为空,具有指定的初始容量并使用指定的增长因子。
4. Queue的方法

Void Clear():从 Queue 中移除所有对象。

Bool Contains(object obj):确定某元素是否在 Queue 中。
Object Clone():创建 Queue 的浅表副本。
Void CopyTo(Array array,int index):从指定数组索引开始将 Queue 元素复制到现有一维 Array 中。
Object Dequeue():移除并返回位于 Queue 开始处的对象。
Void Enqueue(object obj) :将对象添加到 Queue 的结尾处。
Object Peek() :返回位于 Queue 开始处的对象但不将其移除。
Object[]ToArray():将 Queue 元素复制到新数组。
Void TrimToSize():将容量设置为 Queue 中元素的实际数目。


第二组:徐晋 十大编程算法之四:二分查找算法

二分查找算法是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束; 如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。折半搜索每次把搜索区域减少一半,时间复杂度为Ο(logn) 。


第三组:吴景霞 Bootstrap3 datetimepicker控件的使用

Bootstrap3 日期+时间选择控件
1.支持日期选择,格式设定
2.支持时间选择
3.支持时间段选择控制
4.支持中文
官网地址:http://eonasdan.github.io/bootstrap-datetimepicker/
git地址:https://github.com/Eonasdan/bootstrap-datetimepicker
moment语言包:https://github.com/moment/moment
datetimepicker使用配置说明:http://eonasdan.github.io/bootstrap-datetimepicker/Options/
moment时间格式化使用说明:http://momentjs.com/docs/
使用方法,引用的文件:

1.  <script src="../Js/jquery-1.11.3.min.js"></script>  
2.  <link href="../Js/bootstrap-3.3.5-dist/css/bootstrap.css" rel="stylesheet" />  
3.  <script src="../Js/bootstrap-3.3.5-dist/js/bootstrap.min.js"></script>  
4.    
5.  <link href="../Js/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css" rel="stylesheet" />  
6.  <script src="../Js/bootstrap-datetimepicker/js/moment-with-locales.min.js"></script>  
7.  <script src="../Js/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js"></script>  
8.  <div class="row">  
9.      <div class='col-sm-6'>  
10.         <div class="form-group">  
11.             <label>选择日期:</label>  
12.             <!--指定 date标记-->  
13.             <div class='input-group date' id='datetimepicker1'>  
14.                 <input type='text' class="form-control" />  
15.                 <span class="input-group-addon">  
16.                     <span class="glyphicon glyphicon-calendar"></span>  
17.                 </span>  
18.             </div>  
19.         </div>  
20.     </div>  
21.     <div class='col-sm-6'>  
22.         <div class="form-group">  
23.             <label>选择日期+时间:</label>  
24.             <!--指定 date标记-->  
25.             <div class='input-group date' id='datetimepicker2'>  
26.                 <input type='text' class="form-control" />  
27.                 <span class="input-group-addon">  
28.                     <span class="glyphicon glyphicon-calendar"></span>  
29.                 </span>  
30.             </div>  
31.         </div>  
32.     </div>  
33. </div>  
34. [javascript]
35. $(function () {  
36.     $('#datetimepicker1').datetimepicker({  
37.         format: 'YYYY-MM-DD',  
38.         locale: moment.locale('zh-cn')  
39.     });  
40.     $('#datetimepicker2').datetimepicker({  
41.         format: 'YYYY-MM-DD hh:mm',  
42.         locale: moment.locale('zh-cn')  
43.     });  
44. }); 

第四组:傅云 求两个数组之间是否修改、删除、更新

Array holdcardcontrol = (oldversion.ToArray()).Intersect(newversion.ToArray()).ToArray();//交集--update
Array delcardcontrol = (oldtids.ToArray().Except(newtids.ToArray())).ToArray();//待删除
Array addcardcontrol = (newtids.ToArray().Except(oldtids.ToArray())).ToArray();//待添加


第五组:王炳钧 【C#】List<T>对象的深复制

参考网址: http://blog.csdn.net/qq_18995513/article/details/53957048

一、List对象中的T是值类型的情况(int 类型等)
对于值类型的List直接用以下方法就可以复制:

List<T> oldList = new List<T>();
oldList.Add(..);
List<T> newList = new List<T>(oldList);

二、List对象中的T是引用类型的情况(例如自定义的实体类)
1、对于引用类型的List无法用以上方法进行复制,只会复制List中对象的引用,可以用以下扩展方法复制:

static class Extensions   
{   
    public static IList<T> Clone<T>(this IList<T> listToClone) where T: ICloneable   
    {   
        return listToClone.Select(item => (T)item.Clone()).ToList();   
    }   
//<span style="color:#000000;">当然前题是List中的对象要实现ICloneable接口</span>  
}  

2、另一种用序列化的方式对引用对象完成深拷贝,此种方法最可靠

public static T Clone<T>(T RealObject)   
{   
    using (Stream objectStream = new MemoryStream())   
    {   
       //利用 System.Runtime.Serialization序列化与反序列化完成引用对象的复制  
        IFormatter formatter = new BinaryFormatter();   
        formatter.Serialize(objectStream, RealObject);   
        objectStream.Seek(0, SeekOrigin.Begin);   
        return (T)formatter.Deserialize(objectStream);   
    }   
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,634评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,740评论 18 399
  • 一:背景分析 X ​K歌不仅可以作为家庭娱乐和社交娱乐的一项大众娱乐活动,又可实现手机、平板、电视、KTV实体店、...
    小邱同學阅读 419评论 0 0
  • 风在停歇的地方,抚摸着树的枝桠! 云在有你的地方,轻声的歌唱, 我在有花的地方,寻找你的芬芳。 亲爱的,我想你,无...
    l安阅读 341评论 0 0
  • 主题:卡住的恐惧出不来。 事件:我在共修群里,觉得想临在表达一下。今天我要疯了,近几天,几个朋友找我要还钱,现在我...
    郭笑笑2017阅读 184评论 2 1

友情链接更多精彩内容