Collection java 作用
Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能),说白了,接口其实就是一个规范,给你定制一个标准,接口中的方法只有方法名,没有实体;接口可以是JAVA的API中原本就有的,也可以是自定义的;当实现接口中的方法时,方法名相同,但方法体中的实现不同;对于API中原来已经提供的接口而言,当自身提供的一些实现无法满足你实际需求时,就需要你自己根据自身需求来实现接口中的方法;就如这段代码:
package test;
import java.util.Collection;
import java.util.Iterator;
public class TestColl implements Collection{
@Override
public boolean add(Object e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean addAll(Collection c) {
// TODO Auto-generated method stub
return false;
}
@Override
public void clear() {
// TODO Auto-generated method stub
}
@Override
public boolean contains(Object o) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean containsAll(Collection c) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return false;
}
@Override
public Iterator iterator() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean remove(Object o) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean removeAll(Collection c) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean retainAll(Collection c) {
// TODO Auto-generated method stub
return false;
}
@Override
public int size() {
// TODO Auto-generated method stub
return 0;
}
@Override
public Object[] toArray() {
// TODO Auto-generated method stub
return null;
}
@Override
public Object[] toArray(Object[] a) {
// TODO Auto-generated method stub
return null;
}
}
当定义的实现类TestColl实现接口Collection时,接口中可以重写的方法如上代码,你需要哪个方法,就在对应的方法里面写出实现代码就可以了.
你可以这么理解,你想一下,插销和插座,真的有存在的价值吗?不就是两根线接一起嘛,为什么要插销和插座?但是没有能行吗?显然不行,为什么不行?因为接线费劲,有一个统一的标准,只要大家都按照同一个标准来设计电线头子,那么接线的时候一定能通电,对吧!接口的价值也一样,定义了接口就是为了制定规范的,所以说实现接口的时候强制要求实现接口方法,因为那是标准,你生产的是插座,就一定要带俩插孔,不然你就不是插座了。同样的,我说我生产的插座好,我的插座不光带俩插孔,还带花的,那没人管了。所以说实现类里面必须实现接口方法,之后还可以跟带花的插座一样,可以拓展他自己独有的东西。
明白接口的价值了吗?
在面向对象的编程中,接口是表示将来它的实现类应该具备什么功能(具体怎么做到这点,就是实现类的细节,与接口声明无关)。因此我们可以在实现类中实现多个接口把这些接口中的功能都实现了。
像 Collection 接口仅声明了一些基本的特性,而List, Queue, Set 则扩展了声明了其它特性。面向对象中需要正确地划分功能说明并模块化。便于将来类库规模复杂之后依然条理清晰,不容易出错。如果你的程序就那么几个类的话,当然你可以把所有东西写在单一一个 java 源文件中。
那么当你想在Java 中知道那个类实现了什么方法,如果你确信知道那个类名,你可以查看它的 API 文档,上面会写上它实现了什么接口,比如 ArrayList 我们已知它实现了 List 接口,而 List 又扩展了 Collection 接口。如果你依然动态地计算出来,比如当我们拿到一个对象实例时,我不知道它是什么类型的,则可以用反射:
Object a = ...;
Class clazz = a.getClass();
Class[] interfaces = clazz.getInterfaces();
for(int i = 0, size = interfaces.length; i < size; i++) {
System.out.println("Interface :" + interfaces[i].getName());
}
或者你想知道它是否是 List 的实例类:
if (a instanceof List) {
for(ListIterator iter = ((List) a).listIterator(); iter.hasNext();) {
...
}
}
要管理这些资料,java必须提供某种数据结构支持.Collection 集合就很好的解决了这一问题
Collection 是常用的集合List Map Set的顶级接口
它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set