Java集合类笔记2:Collection和Iterator

1.Collection是List,Set,和Queue接口的父接口,该接口定定义的方法可适用于List,Map和Queue
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);
	}
}

你可能感兴趣的:(java,集合)