commons之迭代器(Map、过滤、循环)_双向Map_包JAVA141
2015-12-13 18:53
537 查看
来源:http://www.bjsxt.com/
1、S02E141_01commons之迭代器(Map、过滤、循环)、双向Map、包
a.迭代器(Map、去重、过滤、循环、数组)
b.双向Map
c.包
1、S02E141_01commons之迭代器(Map、过滤、循环)、双向Map、包
a.迭代器(Map、去重、过滤、循环、数组)
package com.test.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访问 * 借助接口IterableMap的实现类HashedMap * 2.UniqueFilterIterator 去重迭代器 * 3.FilterIterator 自定义过滤 + Predicate * 4.new LoopingIterator() 循环迭代器 * 5.new ArrayListIterator() 数组迭代器 */ public class TestIterator { public static void main(String[] args) { testMapIt(); testUniqueIt(); testFilterIt(); testLoopingIt(); testArrayListIt(); } /** * map迭代器 */ public static void testMapIt(){ System.out.println("============map迭代器===================="); IterableMap<String, String> map = new HashedMap<String, String>(); map.put("a", "abcd"); map.put("b", "is"); map.put("c", "good"); //使用MapIterator MapIterator<String, String> it = map.mapIterator(); while (it.hasNext()) { //一定要it.next() 移动游标 /** it.next() String key = it.getKey(); */ String key = it.next(); String value = it.getValue(); System.out.println(key + "-->>" + value); } } /** * 去重迭代器 */ public static void testUniqueIt(){ System.out.println("=========去重迭代器================="); List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); list.add("a"); //去除重复的过滤器 Iterator<String> it = new UniqueFilterIterator(list.iterator()); while (it.hasNext()) { System.out.println(it.next()); } } /** * 自定义过滤迭代器 */ public static void testFilterIt(){ System.out.println("=========自定义过滤迭代器================="); List<String> list = new ArrayList<String>(); list.add("refer"); list.add("dad"); list.add("abcd"); list.add("moon"); //自定义条件判断 Predicate<String> pre = new Predicate<String>(){ @Override public boolean evaluate(String value) { //回文判断 return new StringBuilder(value).reverse().toString().equals(value); } }; //回文的过滤器 Iterator<String> it = new FilterIterator(list.iterator(),pre); while (it.hasNext()) { System.out.println(it.next()); } } /** * 循环迭代器 */ public static void testLoopingIt(){ System.out.println("=========循环迭代器================="); List<String> list = new ArrayList<String>(); list.add("refer"); list.add("dad"); list.add("abcd"); list.add("moon"); Iterator<String> it = new LoopingIterator(list); for (int i = 0; i < 6; i++) { System.out.println(it.next()); } } /** * 数组迭代器 */ public static void testArrayListIt(){ System.out.println("=========数组迭代器================="); int[] arr = {1,2,3,4,5}; Iterator<Integer> it1 = new ArrayListIterator<Integer>(arr); System.out.println("不指定索引,打印全部元素:"); while (it1.hasNext()) { System.out.println(it1.next()); } //指定起始索引和结束索引 Iterator<Integer> it2 = new ArrayListIterator<Integer>(arr,1,3); System.out.println("指定起始索引和结束索引:"); while (it2.hasNext()) { System.out.println(it2.next()); } } } /* 返回: ============map迭代器==================== a-->>abcd c-->>good b-->>is =========去重迭代器================= a b =========自定义过滤迭代器================= refer dad =========循环迭代器================= refer dad abcd moon refer dad =========数组迭代器================= 不指定索引,打印全部元素: 1 2 3 4 5 指定起始索引和结束索引: 2 3 */
b.双向Map
package com.test.commons; import org.apache.commons.collections4.BidiMap; import org.apache.commons.collections4.MapIterator; import org.apache.commons.collections4.bidimap.DualHashBidiMap; import org.apache.commons.collections4.bidimap.DualTreeBidiMap; /** * 双向Map 要求键与值都不能重复,通过键找值,也可以通过值找键(需要反转inverseBidiMap()) * 接口BidiMap * 实现类 * 1.DualTreeBidiMap:有序 * 2.DualHashBidiMap:无序 */ public class TestBidiMap { public static void main(String[] args) { testDualHashBidiMap(); testDualTreeBidiMap(); } /** * 无序的双向Map */ public static void testDualHashBidiMap(){ System.out.println("============无序的双向Map=============="); BidiMap<String, String> map = new DualHashBidiMap<String,String>(); map.put("bc", "bc@test.com"); map.put("ab", "ab@qq.com"); //反转,通过值找键 System.out.println(map.inverseBidiMap().get("bc@test.com"));//打印:bc //遍历查看 MapIterator<String, String> it = map.inverseBidiMap().mapIterator(); while (it.hasNext()) { String key = it.next(); String value = it.getValue(); System.out.println(key + "-->>" + value); } } /** * 有序的双向Map */ public static void testDualTreeBidiMap(){ System.out.println("============有序的双向Map=============="); BidiMap<String, String> map = new DualTreeBidiMap<String,String>(); map.put("bc", "bc@test.com"); map.put("ab", "ab@qq.com"); MapIterator<String, String> it = map.inverseBidiMap().mapIterator(); while (it.hasNext()) { String key = it.next(); String value = it.getValue(); System.out.println(key + "-->>" + value); } } } /* 返回: ============无序的双向Map============== bc ab@qq.com-->>ab bc@test.com-->>bc ============有序的双向Map============== ab@qq.com-->>ab bc@test.com-->>bc */
c.包
package com.test.commons; import java.util.Iterator; import java.util.Set; import org.apache.commons.collections4.Bag; import org.apache.commons.collections4.bag.HashBag; import org.apache.commons.collections4.bag.TreeBag; /** * Bag 包 允许重复 * 1.HashBag 无序 * 2.TreeBag 有序 * 统计单词出现的次数 */ public class TestBag { public static void main(String[] args) { testHashBag(); testTreeBag(); statistic(); } /** * 无序的包 */ public static void testHashBag(){ System.out.println("=======无序的包====================="); Bag<String> bag = new HashBag<String>(); bag.add("a"); bag.add("b"); bag.add("a",5); bag.remove("a",2); bag.add("c"); Iterator<String> it = bag.iterator(); while (it.hasNext()) { System.out.println(it.next()); } } /** * 有序的包 */ public static void testTreeBag(){ System.out.println("=======有序的包====================="); Bag<String> bag = new TreeBag<String>(); bag.add("a"); bag.add("b"); bag.add("a",5); bag.remove("a",2); bag.add("c"); Iterator<String> it = bag.iterator(); while (it.hasNext()) { System.out.println(it.next()); } } /** * 统计单词出现的次数 */ public static void statistic(){ String str = "this is a cat and that is a mice where is the food"; //分割字符串 String[] strArray = str.split(" "); Bag<String> bag = new TreeBag<String>(); for (String temp : strArray) { bag.add(temp); } System.out.println("==============统计次数==============="); Set<String> keys = bag.uniqueSet(); for (String letter : keys) { System.out.println(letter + "-->>" + bag.getCount(letter)); } } } /* 返回: =======无序的包===================== a a a a b c =======有序的包===================== a a a a b c ==============统计次数=============== a-->>2 and-->>1 cat-->>1 food-->>1 is-->>3 mice-->>1 that-->>1 the-->>1 this-->>1 where-->>1 */
相关文章推荐
- spring支持JCP的JSR330规范,使用javax.inject
- 《java并发编程实战》随笔——第二章 线程安全性
- net.sf.json在处理json对象转换为普通java实体对象时的问题和解决方案
- Spring MVC Controller单例陷阱
- JAVA泛型学习笔记
- 《spring in action》笔记(一)
- ubuntu,jdk安装成功后,点击eclipse,提示信息A Java RunTime Environment (JRE) or Java Development Kit (JDK)
- Java IO
- Java----之“关键字”
- 圣思园java se培训总结(50)(类集的总结)
- spring MultiActionController 简单配置
- Ubuntu make 及多版本JDK安装与切换
- 浅析Java中的访问权限控制
- Java Nio 三、Java NIO Channel
- 浅谈Java中的对象和引用
- java webservice 用户验证 (服务端 + 客户端)
- java web开发 高并发处理
- java学习感悟
- spring beans源码解读
- JAVA环境变量配置的作用