java commons之迭代器扩展练习_Map_去重_自定义_循环_数组

package commons之迭代器扩展;

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访问

  •  有2个接口:IterableMap及比较好用的HashedMap
    
    1. 去重迭代器:UniqueFilterIterator
    1. 自定义迭代器:FilterIterator ;(自定义过滤+断言Predicate)
  • 4.循环迭代器:LoopingIterator

  • 5.数组迭代器:ArrayListIterator
    */
    public class Demo01 {

    public static void main(String[] args) {
    mapIt();
    uniqueIt();
    filterIt();
    loopIt();
    arrayIt();
    }
    /**

    • map迭代器
      */
      public static void mapIt(){
      System.out.println("=====map迭代器=");
      IterableMap<String, String> map = new HashedMap<>();
      map.put(“1”, “张三”);
      map.put(“2”, “李四”);
      map.put(“3”, “王五”);
      //现在使用MapIterator
      MapIterator<String, String> it = map.mapIterator();
      while(it.hasNext()){
      //注意:一定要用it.nest()移动游标
      String key = it.next();
      String value = it.getValue();
      //或者使用
      /*
      it.next();//前提是必须用it.next()
      String key = it.getKey();
      String value = it.getValue();
      /
      System.out.println(key+"–>"+value);
      }
      }
      /
      *
    • 去重迭代器
      */
      public static void uniqueIt(){
      System.out.println("=====去重迭代器=");
      List list = new ArrayList();
      list.add(“a”);
      list.add(“b”);
      list.add(“b”);
      //包装;去掉重复的过滤器
      Iterator it = new UniqueFilterIterator(list.iterator());
      //循环
      while(it.hasNext()){
      System.out.println(it.next());
      }
      }
      /**
    • 自定义过滤器
      */
      public static void filterIt(){
      System.out.println("=====自定义迭代器=");
      List list = new ArrayList();
      list.add(“reaer”);
      list.add(“bcb”);
      list.add(“bdef”);
      list.add(“moom”);
      //自定义条件判断
      Predicate pre = new Predicate(){//Predicate断言
      @Override
      public boolean evaluate(String value) {//evaluate评价
      //回文判断;StringBuilder可变的字符序列;reverse反转;toString转换成字符串;equals相等
      return new StringBuilder(value).reverse().toString().equals(value);
      }
      };
      //包装;去掉重复的过滤器
      Iterator it = new FilterIterator(list.iterator(),pre);
      //循环
      while(it.hasNext()){
      System.out.println(it.next());
      }
      }
      /**循环迭代器

    */
    public static void loopIt(){
    System.out.println("=====循环迭代器=");
    List list = new ArrayList();
    list.add(“reaer”);
    list.add(“bcb”);
    list.add(“bdef”);
    list.add(“moom”);
    //循环输出
    Iterator it = new LoopingIterator<>(list);

    for(int i=0;i<6;i++){
    	System.out.println("循环第"+(i+1)+"次");
    	System.out.println(it.next());	
    }  	 
    

    }
    /**

    • 数组迭代器
      */
      public static void arrayIt(){
      System.out.println("=====数组迭代器=");
      int[] arr = {1,2,3,4,5,6,7,8};
      //数组的迭代器; 泛型只能使用在引用类型上面
      Iterator it = new ArrayListIterator<>(arr);
      while(it.hasNext()){
      System.out.print(it.next()+";");

      }
      System.out.println();
      System.out.println(“循环位置选择”);
      //数组元素,指定起始索引和结束索引 如;3–7;
      Iterator it2 = new ArrayListIterator<>(arr,3,7);
      while(it2.hasNext()){
      System.out.print(it2.next()+";");
      }
      }
      }
      //结果-----------------------------------------------------------
      =====map迭代器=
      3–>王五
      2–>李四
      1–>张三
      =====去重迭代器=
      a
      b
      =====自定义迭代器=
      reaer
      bcb
      moom
      =====循环迭代器=
      循环第1次
      reaer
      循环第2次
      bcb
      循环第3次
      bdef
      循环第4次
      moom
      循环第5次
      reaer
      循环第6次
      bcb
      =====数组迭代器=
      1;2;3;4;5;6;7;8;
      循环位置选择
      4;5;6;7;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值