迭代器的扩展

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.commons.collections4.IterableMap;
import org.apache.commons.collections4.MapIterator;
import org.apache.commons.collections4.Predicate;
import org.apache.commons.collections4.iterators.ArrayListIterator;
import org.apache.commons.collections4.iterators.FilterIterator;
import org.apache.commons.collections4.iterators.LoopingIterator;
import org.apache.commons.collections4.iterators.UniqueFilterIterator;
import org.apache.commons.collections4.map.HashedMap;


/**
 * 迭代器的扩展
 * 1.MapIterator以后不再使用map.keySet.iterator访问
 *   IterableMap接口->HashedMap实现类
 * 2.UniqueFilterIterator(去重迭代器 )
 * 3.FilterIterator 自定义过滤 +Predicate
 * 4.LoopingIterator 循环迭代器
 * 5.ArrayListIterator 数组迭代器
 */
public class Demo04 {
    public static void main(String[] args) {
        test1();
        test2();
        test3();
        test4();
        test5();
    }

    public static void test1(){
        System.out.println("=============测试MapIterator===============");
        IterableMap<String,String> map =new HashedMap<String,String>();
        map.put("a","bjsxt");
        map.put("b", "sxt");
        map.put("c", "good");

        MapIterator<String, String> it = map.mapIterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }

    public static void test2(){
        System.out.println("=============测试UniqueFilterIterator===============");
        List<String> list =new ArrayList<String>();
        list.add("a");
        list.add("b");
        list.add("a");
        //去除重复的过滤器
        Iterator<String> it =new UniqueFilterIterator<String>(list.iterator());
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }

    public static void test3(){
        System.out.println("=============测试自定义FilterIterator===============");
        List<String> list =new ArrayList<String>();
        list.add("refer");
        list.add("dad");
        list.add("bjsxt");
        list.add("moom");

        Predicate<String> pre = new Predicate<String>() {
            @Override
            public boolean evaluate(String o) {
                return new StringBuilder(o).reverse().toString().equals(o);
            }
        };

        //筛选回文的过滤器
        Iterator<String> it =new FilterIterator<String>(list.iterator(),pre);
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }

    public static void test4(){
        System.out.println("=============测试LoopingIterator===============");
        List<String> list =new ArrayList<String>();
        list.add("refer");
        list.add("dad");
        list.add("bjsxt");
        list.add("moom");

        Iterator<String> it =new LoopingIterator<String>(list);
        for(int i=0;i<15;i++){
            System.out.println(it.next());
        }
    }

    public static void test5(){
        System.out.println("=============测试数组迭代器===============");
        int[] arr ={1,2,3,4,5};
        //数组迭代器-泛型只能使用引用类型(Integer)
        //Iterator<Integer> it =new ArrayListIterator<Integer>(arr);
        Iterator<Integer> it =new ArrayListIterator<Integer>(arr,1,3);//指定起始索引和结束索引
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值