**在Collection接口中声明了适用于Java集合(只包括Set、List和Queue)的通用方法。**如下表:
方法 | 描述 |
---|---|
boolean add(Object o) | 向集合中加入一个对象的引用 |
void clear() | 删除集合中的所有对象,即不再持有这些对象的引用 |
boolean contains(Object o) | 判断集合中是否持有特定对象的引用 |
boolean isEmpty() | 判断集合是否为空 |
Iterator iterator() | 返回一个Iterator对象,可用它来遍历集合中的元素 |
boolean remove(Object o) | 从集合中删除一个对象的引用 |
int size() | 返回集合中元素的数目 |
Object[] toArray()<T>T[] toArray(T[] a) | 返回一个数组,该数组包含集合中的所有元素 |
Set接口、List接口和Queue接口都继承了Collection接口,而Map接口没有继承Collection接口,因此可以对Set对象、List对象和Queue调用以上方法,但是不能对Map对象调用以上方法。
**Iterator接口隐藏底层集合的数据结构,向客户程序提供了遍历各种类型的集合的统一接口。**Iterator接口声明了如下方法:
- hasNext():判断集合中的元素是否遍历完毕,如果没有,就返回true。
- next():返回下一个元素。
- remove():从集合中删除由next()方法返回的当前元素。
在Vistor类的print()方法中,利用Iterator来遍历集合:
package test221121;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Queue;
import java.util.Set;
public class Vistor {
public static void print(Collection<? extends Object> c){
Iterator<? extends Object> it = c.iterator();
while(it.hasNext()){
Object element = it.next();
System.out.println(element);
}
}
public static void printWithForFeach(Collection<? extends Object> c){
for(Object element:c)
System.out.println(element);
}
public static void main(String[] args) {
Set<String> set = new HashSet<String>();
set.add("Tom");
set.add("Marry");
set.add("Jack");
print(set);
List<String> list = new ArrayList<String>();
list.add("Linda");
list.add("Mary");
list.add("Rose");
print(list);
Queue<String> queue = new ArrayDeque<String>();
queue.add("Tome");
queue.add("Mike");
queue.add("Jack");
print(queue);
Map<String,String> map = new HashMap<String,String>();
map.put("M", "男");
map.put("F", "女");
print(map.entrySet());
printWithForFeach(set);
printWithForFeach(list);
printWithForFeach(queue);
printWithForFeach(map.entrySet());
}
}