Collection和Iterator接口方法详解

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值