我们看一个简单的例子,来了解一下集合类的基本方法的使用:
import java.util.*; public class CollectionToArray { public static void main(String[] args) { Collection collection1=new ArrayList();//创建一个集合对象 collection1.add("000");//添加对象到Collection集合中 collection1.add("111"); collection1.add("222"); System.out.println("集合collection1的大小:"+collection1.size()); System.out.println("集合collection1的内容:"+collection1); collection1.remove("000");//从集合collection1中移除掉 "000" 这个对象 System.out.println("集合collection1移除 000 后的内容:"+collection1); System.out.println("集合collection1中是否包含000 :"+collection1.contains("000")); System.out.println("集合collection1中是否包含111 :"+collection1.contains("111")); Collection collection2=new ArrayList(); collection2.addAll(collection1);//将collection1 集合中的元素全部都加到collection2中 System.out.println("集合collection2的内容:"+collection2); collection2.clear();//清空集合 collection1 中的元素 System.out.println("集合collection2是否为空 :"+collection2.isEmpty()); //将集合collection1转化为数组 Object s[]= collection1.toArray(); for(int i=0;i<s.length;i++){ System.out.println(s[i]); } } } |
运行结果为:
集合collection1的大小:3 集合collection1的内容:[000, 111, 222] 集合collection1移除 000 后的内容:[111, 222] 集合collection1中是否包含000 :false 集合collection1中是否包含111 :true 集合collection2的内容:[111, 222] 集合collection2是否为空 :true 111 222 |
这里需要注意的是,Collection 它仅仅只是一个接口,而我们真正使用的时候,确是创建该接口的一个实现类。做为集合的接口,它定义了所有属于集合的类所都应该具有的一些方法。
而ArrayList (列表)类是集合类的一种实现方式。
下面,我们看一个对于迭代器的简单使用:
import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class IteratorDemo { public static void main(String[] args) { Collection collection = new ArrayList(); collection.add("s1"); collection.add("s2"); collection.add("s3"); Iterator iterator = collection.iterator();//得到一个迭代器 while (iterator.hasNext()) {//遍历 Object element = iterator.next(); System.out.println("iterator = " + element); } if(collection.isEmpty()) System.out.println("collection is Empty!"); else System.out.println("collection is not Empty! size="+collection.size()); Iterator iterator2 = collection.iterator(); while (iterator2.hasNext()) {//移除元素 Object element = iterator2.next(); System.out.println("remove: "+element); iterator2.remove(); } Iterator iterator3 = collection.iterator(); if (!iterator3.hasNext()) {//察看是否还有元素 System.out.println("还有元素"); } if(collection.isEmpty()) System.out.println("collection is Empty!"); //使用collection.isEmpty()方法来判断 } } |
程序的运行结果为:
iterator = s1 iterator = s2 iterator = s3 collection is not Empty! size=3 remove: s1 remove: s2 remove: s3 |
还有元素
collection is Empty!
可以看到,Java的Collection的Iterator 能够用来,:
1) 使用方法 iterator() 要求容器返回一个Iterator .第一次调用Iterator 的next() 方法时,它返回集合序列的第一个元素。
2) 使用next() 获得集合序列的中的下一个元素。
3) 使用hasNext()检查序列中是否元素。
4) 使用remove()将迭代器新返回的元素删除。
需要注意的是:方法删除由next方法返回的最后一个元素,在每次调用next时,remove方法只能被调用一次 .
大家看,Java 实现的这个迭代器的使用就是如此的简单。Iterator(跌代器)虽然功能简单,但仍然可以帮助我们解决许多问题,同时针对List 还有一个更复杂更高级的ListIterator.您可以在下面的List讲解中得到进一步的介绍。
我们看一个List的例子:
import java.util.*; public class ListIteratorTest { public static void main(String[] args) { List list = new ArrayList(); list.add("aaa"); list.add("bbb"); list.add("ccc"); list.add("ddd"); System.out.println("下标0开始:"+list.listIterator(0).next());//next() System.out.println("下标1开始:"+list.listIterator(1).next()); System.out.println("子List 1-3:"+list.subList(1,3));//子列表 ListIterator it = list.listIterator();//默认从下标0开始 //隐式光标属性add操作 ,插入到当前的下标的前面 it.add("sss"); while(it.hasNext()){ System.out.println("next Index="+it.nextIndex()+",Object="+it.next()); } //set属性 ListIterator it1 = list.listIterator(); it1.next(); it1.set("ooo"); ListIterator it2 = list.listIterator(list.size());//下标 while(it2.hasPrevious()){ System.out.println("previous Index="+it2.previousIndex()+",Object="+it2.previous()); } } } |
程序的执行结果为:
下标0开始:aaa 下标1开始:bbb 子List 1-3:[bbb, ccc] next Index=1,Object=aaa next Index=2,Object=bbb next Index=3,Object=ccc next Index=4,Object=ddd previous Index=4,Object=ddd previous Index=3,Object=ccc previous Index=2,Object=bbb previous Index=1,Object=a |