public class HashSetTest {
public static void main(String[] args) {
/*1. Collection 接口*/
//建立一个集合
Collection c=new ArrayList();
//添加元素
c.add("猪八戒");
c.add("遇上白骨精");
c.add(8);
System.out.println("c集合元素的个数为:"+c.size());
System.out.println("c集合的元素为:"+c);
//删除元素
c.remove(8);
System.out.println("c集合元素的个数为:"+c.size());
//判断是否包含指定字符串
System.out.println("c集合总是否包含猪八戒字符串:"+c.contains("猪八戒"));
c.add("去西天取经");
System.out.println("c集合的元素为:"+c);
Collection books=new HashSet();
books.add("遇上白骨精");
books.add("猪八戒");
books.add("孙悟空来了");
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);
books.retainAll(c); //books集合删除集合c中不包含的元素 ??
System.out.println("books的元素为:"+books);
System.out.println("\n");
/*2.Iterator接口的使用
* 主要用于遍历(迭代访问)Collection中的元素*/
//创建一个集合
Collection book1=new HashSet();
book1.add("你是编程高手");
book1.add("你是爱情高手");
book1.add("你是程序猿吧");
//获取book1集合对应的迭代器
Iterator its1=book1.iterator();
//判断是否还有元素迭代,用于判断元素右边是否还有数据,返回true说明有,然后就可以调用next 动作。
while(its1.hasNext())
{
//未使用泛型,需要强制转换
String book=(String)its1.next();
System.out.println(book);
if(book.equals("你是爱情高手"))
{
its1.remove();
//使用Iterator迭代过程中,不可修改集合元素,下面代码会引发异常
//books.remove(book);
}
//对book变量赋值,不会改变集合元素本身
book="测试字符串";
}
System.out.println(books);
}
}
/*说明:
(1)通过语句“book = "测试字符串"; ”对迭代变量book进行赋值时,
当我们再次输出books集合时,集合里的元素没有任何变化。
即当使用Iterator对集合元素进行迭代时,
Iterator并不是把集合元素本身传给迭代变量,而是把集合元素的值传给了迭代变量。
(2)当使用Iterator来访问Collection集合元素时,只有通过Iterator的remove方法删除(it.remove();)
上一次next方法返回的集合元素才可以给集合中添加元素(book = "测试字符串"; )。
否则引发java.util.ConcurrentModificationExcption异常。*/
阅读(1182) | 评论(0) | 转发(0) |