1.Collection是List,Set,和Queue接口的父接口,该接口定定义的方法可适用于List,Map和Queue
TestCollection.java
2.如果想依次访问集合里的每一个元素,则需要某种方式来遍历集合元素,遍历集合元素的方法:
1)使用Iterator接口遍历集合元素:
Iterator也是Java集合框架的成员,但其主要好是用于遍历(即迭代访问)collection集合中的元素,Iterator对象也称为迭代器。
testIerator.java
这段代码中可以看出:Iterator仅仅用于遍历集合,Iterator本身并不具备盛装对象的能力。如果需要创建一个Iterator对象,则必须有一个被迭代的集合。没有集合的Iterator仿佛无本之木,没有存在的价值。
注释111中,对迭代变量book进行赋值,但当我们再次输出books集合时发现集合里的元素没有任何改变。这就可以得出一个结论:当使用Iterator对集合元素进行迭代时,Iterator并不是把集合元素本身传给了迭代变量,而是把集合元素的值传给了迭代变量,所以修改迭代变量的值对集合元素本身没有任何改变[/b][/color]。
2)使用foreach循环遍历集合元素
testForeach.java
TestCollection.java
import java.util.*;
public class TestCollection
{
public static void main(String[] args) {
Collection c = new ArrayList();
c.add("你最牛逼");
System.out.println("c集合的元素:" + c);
//虽然集合中不能放基本类型的值,但Java支持自动装箱
c.add(6);
System.out.println("c的集合个数为:" + c.size());
//判断是否包含指定字符串
System.out.println("c集合中是否包含你最牛逼字符串:" + c.contains("你最牛逼"));
//删除指定元素
c.remove("你最牛逼");
System.out.println("c集合的元素:" + c);
Collection books = new HashSet();
books.add("你很牛吗??");
books.add("你最牛逼");
books.add("学习吧!");
System.out.println("books集合中的元素:" + books);
System.out.println("c集合是否包含books集合" + c.contains(books));
System.out.println("c集合是否全部包含books集合" + c.containsAll(books));
//用c集合减去books集合中的元素
c.removeAll(books);
System.out.println("c集合的元素:" + c);
//删除c中所有的元素
c.clear();
System.out.println("c的集合个数为:" + c.size());
//books集合只剩下c集合也同时包含的元素
books.retainAll(c);
System.out.println("books集合中的元素:" + books);
}
}
2.如果想依次访问集合里的每一个元素,则需要某种方式来遍历集合元素,遍历集合元素的方法:
1)使用Iterator接口遍历集合元素:
Iterator也是Java集合框架的成员,但其主要好是用于遍历(即迭代访问)collection集合中的元素,Iterator对象也称为迭代器。
testIerator.java
import java.util.*;
public class testIterator
{
public static void main(String[] args) {
Collection books = new HashSet();
books.add("core java");
books.add("thinking in java");
books.add("Java程序设计");
//获取books集合对应的迭代器
Iterator it = books.iterator();
//it.next()方法返回的数据类型是Object类型,需要强制转换类型
while(it.hasNext()) {
String book = (String)it.next();
System.out.println(book);
if(books.equals("core java")) {
//从集合中删除上一次next方法返回的元素
it.remove();
}
//对book变量赋值,不会改变集合元素本身
book = "测试字符串";//111
}
System.out.println(books);
}
[color=red][b]}
这段代码中可以看出:Iterator仅仅用于遍历集合,Iterator本身并不具备盛装对象的能力。如果需要创建一个Iterator对象,则必须有一个被迭代的集合。没有集合的Iterator仿佛无本之木,没有存在的价值。
注释111中,对迭代变量book进行赋值,但当我们再次输出books集合时发现集合里的元素没有任何改变。这就可以得出一个结论:当使用Iterator对集合元素进行迭代时,Iterator并不是把集合元素本身传给了迭代变量,而是把集合元素的值传给了迭代变量,所以修改迭代变量的值对集合元素本身没有任何改变[/b][/color]。
2)使用foreach循环遍历集合元素
testForeach.java
import java.util.*;
public class testForeach
{
public static void main(String[] args) {
Collection books = new HashSet();
books.add(new String("core java"));
books.add(new String("thinking in java"));
books.add(new String("java程序设计"));
for(Object obj : books) {
String book = (String)obj;
System.out.println(book);
book = "测试";
}
System.out.println(books);
}
}