C#与java中的集合区别

集合一般的操作

      插入: add

      删除: remove

      查找: contains,remove

java中的集合

注意哪些是接口,哪些是实现类

C#与java中的集合区别

使用集合的时候

  1. 有无序,可否重复

    –Set:无序、不可重复的集合
    –List:有序,可重复的集合
      --双向链表(LinkedList):对get和set调用花费常数时间,对插入和删除代价昂贵
      --动态数组(ArrayList): 对插入和删除开销小,对get花费昂贵(不容易做索引,但是可以通过索引访问)
    –Map:具有映射关系的集合
                   
                     插入一个元素:
                                 add(0,ob)   表头插入,LinkedList时间是O(1),ArrayList时间是O(N)
                                 add(ob)        表尾插入,LinkedList时间是O(1),ArrayList时间是O(1)
                     获取一个元素:
                                 get(i)           LinkedList时间是O(N)
                                                       ArrayList时间是O(1)      
                     搜索一个元素:
                                 两者都很低效。
                                 Contains的contains和remove两个方法都需要花费线性时间。   
           
                  ArrayList中有一个容量的概念。表示基础数组,可扩展。 trimToSize方法可以在所有ArrayList添加完成之后使用避免浪费空间;
 

"Collection”和“Collections”是两个不同的概念。,”Collection”是集合层次的顶层接口,而”Collections”是提供了操作集合类型的静态方法的类。

 当我们操作集合的时候,如果觉得需要什么方法,都可以到Collections 类中来找
 
C#中的集合
C#与java中的集合区别
 C#中:
凡是接口都是I开头的,所以List在java中是接口,而在C#中是类。
List类型是可以使用索引的。只不过它在定义的时候是不指定大小的。
所有集合相关类型都必须要实现一个接口,那就是IEnumerable,这也就是为什么不管是数组、还是集合、还是字典,都支持foreach操作的原因。
 所有集合接口的祖宗是IEnumerable,有点同java中的Iterator
 
 
 
上一篇:Codeforces 758D Ability To Convert(区间DP)


下一篇:HDU 1862 EXCEL次序 (排序水问题)