Collection接口里常用方法:
下面实例示范了如何通过上面的方法来操作Collection集合里的元素。
package base1;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
public class CollectionDemo {
public static void main(String[] args){
Collection c = new ArrayList();
//添加元素
c.add("孙悟空");
c.add(6);
System.out.println("c集合里的元素个数为:"+c.size());
//删除指定的元素
c.remove(6);
System.out.println("c集合里的元素个数:"+c.size());
//判断是否包含指定字符串
System.out.println("c集合里是否包含[孙悟空]这个元素:"+c.contains("孙悟空"));
c.add("轻量级java疯狂讲义");
System.out.println("c集合里的元素:"+c);
Collection books = new HashSet();
books.add("轻量级java疯狂讲义");
books.add("疯狂java讲义");
System.out.println("c集合是否完全包含books集合?"+c.containsAll(books));
//两个集合里相同的元素全部去掉
c.removeAll(books);
System.out.println("c集合里的元素:"+c);
//清空c集合
c.clear();
System.out.println("c集合里的元素:"+c);
//只保留c和books集合里相同的元素
books.retainAll(c);
System.out.println("books集合里的元素:"+books);
}
}
上面程序中创建了两个Collection对象,一个是c集合,一个是books集合,虽然两个集合所使用的实现类不一样,但当把他们当成Collection来使用时,使用add,remove,clear等方法来操作集合元素时没有任何区别。
下面是程序运行结果:
c集合里的元素个数为:2
c集合里的元素个数:1
c集合里是否包含[孙悟空]这个元素:true
c集合里的元素:[孙悟空, 轻量级java疯狂讲义]
c集合是否完全包含books集合?false
c集合里的元素:[孙悟空]
c集合里的元素:[]
books集合里的元素:[]
Java8增强的Iterator遍历集合元素
Iterator接口也是Java集合框架的成员,但它与Collection,Map的集合不一样:Collection集合,Map集合主要用于盛装其他对象,而Iterator则主要用于遍历(即迭代访问)Collection集合中的元素,Iterator对象被称之为迭代器。下面通俗的解释一下什么是迭代器:可以把迭代器比喻成电玩城里夹布娃娃的夹子,夹子的开始,移动,松手就代表迭代器中的方法;在不同的电玩城夹子的形状也会有所不同,这行不同的形状就代表迭代器的实现类;夹子被封装在箱子里,就表示迭代器的类要被封装在内部,是内部类;要想夹起布娃娃就要通过外面的操纵杆来完成,所以操纵杆就代表实现迭代器的操作者。
Iterator接口里定义的方法:
下面实例示范了如何通过Iterator接口来遍历集合元素:
package base4;
import java.util.List;
import java.util.ArrayList;
import java.util.ListIterator;
public class ListDemo {
public static void method(Object obj){
System.out.println(obj);
}
public static void main(String[] args){
ArrayList a = new ArrayList();
a.add("java01");
a.add("java02");
a.add("java03");
method("原集合:"+a);
for(ListIterator li = a.listIterator();li.hasNext();){
Object obj = li.next();
if(obj.equals("java02")){
//li.add("java006");
li.remove();
method(a);
}
}
}
}
运行结果如下:
原集合:[java01, java02, java03]
[java01, java03]
使用lambda表达式遍历Iterator
Java8新增了一个forEachRemaining(Consumer action)方法,该方法所需的Consumer参数是函数式接口。当程序调用Iterator的forEachRemaining(Consumer action)遍历集合元素时,程序会依次将集合元素传给Consumer的accept(T t)方法(该接口的唯一抽象方法)
下面程序示范了使用lambda表达式来遍历集合元素:
package base1;
import java.util.*;
public class test {
public static void main(String[] args){
ArrayList al = new ArrayList();
al.add("java01");
al.add("java02");
al.add("java03");
al.add("java04");
//获取al集合对应的迭代器
Iterator it = al.iterator();
it.forEachRemaining(obj->System.out.println("迭代集合元素:"+obj));
}
}
运行结果:
迭代集合元素:java01
迭代集合元素:java02
迭代集合元素:java03
迭代集合元素:java04