Collection 和 Collections 的区别是在面试过程中经常被问到的知识,两个单词虽然只有一个s的不同,但含义和用法却是天差地别:
首先,Collection 是个 java.util 下的接口 ,它是各种集合结构的父接口。继承与他的接口主要有 Set 和 List。学习Java的人是必须对Collection了如指掌的,因为不管以后你是做服务器开发还是做安卓,集合都是必须要掌握的,最好能弄懂他们的源码,现在看看集合的分类和Collection的分支结构:
1.类集框架最大的接口:Collection、Map、Iterator、Enumeration
2.Collection:存放单值
|- List:允许有重复内容,有序
|- ArrayList:异步处理,新的操作类,非线程安全。
|- Vector:同步处理,旧的操作类,线程安全。支持Enumeration输出
|- Set:不允许有重复内容,无序,靠hashCoke()和equals()进行重复的严重
|- HashSet:无序存放
|-TreeSet:有序存放,安Comparable排序
3.Map:存放一对值
|- HashMap:新的类,异步处理,非线程安全,允许有null
|- Hashtable:旧的类,同步处理,线程安全,不允许有null
|-Properties:属性操作类
|- TreeMap:有序排列,按key排序,根据Comparable指定排序规则
4.Iterator:
|- 迭代输出,依靠Collection接口中的iterator方法输出,是新的输出标准
5.Enumeration:旧的输出标准
2,3,4是我们做开发时经常用到的,也是必须要掌握的,不少公司在面试的时候都会热衷于问集合。
Collections 是个 java.util 下的专用静态类 ,它包含有各种有关集合操作的静态方法 。提供一系列静态方法实现对各种集合的搜索、排序、线程安全化 等操作(这个自己看下API文档,讲的十分清楚,再次不再过多阐述,主要我也是菜鸟,怕说错了误人子弟)。
说到这里值得一提的是Array 与Arrays 的区别,其实跟Collection 和 Collections非常类似:
1 .数组类 Array ,是 Java 中最基本的一个存储结构。提供了动态创建和访问 Java 数组的方法 。其中的元素的类型必须相同 。效率高,但容量固定且无法动态改变。 它无法判断其中实际存有多少元素 , length 只是告诉我们 array 的容量 。
2 、 Arrays 类,此静态类专门用来操作 array ,提供搜索、排序、复制等静态方法。 equals() :比较两个 array 是否相等。 array 拥有相同元素个数,且所有对应元素两两相等。 sort() :用来对 array 进行排序。 binarySearch() :在排好序的 array 中寻找元素。