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

第一组:刘聪 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.    
2.    
3.    
4.    
5.    
6.    
7.    
8.  
9.
10.
11. 12. 13.
14. 15. 16. 17. 18.
19.
20.
21.
22.
23. 24. 25.
26. 27. 28. 29. 30.
31.
32.
33.
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对象的深复制

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

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

List oldList = new List();
oldList.Add(..);
List newList = new List(oldList);

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

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

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

public static T Clone(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);   
    }   
}

你可能感兴趣的:(2018-03-13 C# Queue、二分查找算法、Bootstrap3 datetimepicker控件的使用、【C#】List对象的深复制)