您的位置:首页 > 其它

Collection和Iterator接口方法详解

2017-07-20 19:14 267 查看

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);
}

4000
}
}
}


运行结果如下:

原集合:[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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iterator
相关文章推荐