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());
}
}
}
迭代器的扩展
最新推荐文章于 2025-03-04 10:04:45 发布