集合中有List、Set、Queue等等接口,而Collection是这些接口的父接口。而Collection接口是继承自Iterable接口的。也就是说实现Collection接口的集合元素是可迭代。Iterable接口只有一个iterator()方法,返回在这个集合上进行迭代的迭代器。
public interface Iterable<T> {
/**
* Returns an iterator over a set of elements of type T.
* 返回一个在一组T类型元素集合上进行迭代的迭代器
* @return an Iterator.
*/
Iterator<T> iterator();
}
Collection接口中常用的方法:
int size();
contains(Object o);
<T> T[] toArray(T[] a);
boolean add(E e);
boolean remove(Object o);
boolean containsAll(Collection<?> c);
接下来简单的介绍下每个方法的用法:
add(E e)顾名思义是往集合中添加一个指定的元素,返回的是一个布尔型的变量,当此集合由于调用add()方法而发生改变的时候返回true,如果此集合不允许有重复的元素并且已包含有指定元素的时候就返回false,就是说当这个集合调用了add()方法而没有发生改变的就返回false。
public class CollectionTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Collection<String> collection=new HashSet<String>();
System.out.println("result1:"+collection.add("one"));
System.out.println("result2:"+collection.add("two"));
System.out.println("result3:"+collection.add("one"));
}
}
结果会是:
result1:true
result2:true
result3:false
可以看到前两此collection集合调用add()方法都改变了该集合的结构,所以返回的是true,而当第三此调用add()方法添加一个已经存在的元素时,这个元素并没有添加进去,集合的结构并没有发生改变,因此返回false。(当然这是Set集合的性质决定的)。
remove(Object o)是删除集合中指定的元素,返回的也是布尔型值。当删除元素改变了集合的结构时就返回true,如果删除没有改变集合的结构就返回false。
public class CollectionTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Collection<String> collection=new ArrayList<String>();
collection.add("one");
collection.add("two");
collection.add("three");
System.out.println("result1:"+collection.remove("two"));
System.out.println("result2:"+collection.remove("two"));
}
}
结果会是:
result1:true
result2:false
这是因为第一次删除时改变了集合的结构所以返回true,而第二次删除时并没有改变集合的结构因此返回false。
<T> T[] toArray(T[] a)返回包含此集合中所有元素的数组,此方法充当基于数组与基于集合之间的桥梁,对输出数组的运行时类型进行精确的控制。参数T[] a只是对转化的数组进行类型指定。
public class CollectionTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Collection<String> collection=new ArrayList<String>();
collection.add("one");
collection.add("two");
collection.add("three");
collection.add("four");
String str[]=null;
String s1[]=new String[]{};
str=collection.toArray(s1);
System.out.println("result1:"+convertToStr(str));
String s2[]=new String[0];
str=collection.toArray(s2);
System.out.println("result2:"+convertToStr(str));
str=collection.toArray(new String[0]);
System.out.println("result3:"+convertToStr(str));
}
public static String convertToStr(String str[]){
StringBuffer strBuffer=new StringBuffer();
for(int i=0;i<str.length;i++){
strBuffer.append(str[i]);
if(i!=str.length-1){
strBuffer.append(",");
}
}
return strBuffer.toString();
}
}
结果是:
result1:one,two,three,four
result2:one,two,three,four
result3:one,two,three,four
说明toArray()方法只用送一个类型参数就行了,以上程序中三种参数类型都行。
contains(Object o)用于判断该集合中是否包含指定的元素,如果包含返回true,否则返回false。
public class CollectionTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Collection<String> collection=new ArrayList<String>();
collection.add("one");
collection.add("two");
collection.add("three");
collection.add("four");
System.out.println("result1:"+collection.contains("three"));
System.out.println("result2:"+collection.contains("five"));
}
}
结果是:
result1:true
result2:false
在Collection接口中定义的最常用的方法大概就是这么几个。