); List
list = new ArrayList<>(); list.add("abcba"); list.add("dad"); list.add("dsfa"); //自定义的条件 Predicate
pre = new Predicate
() { @Override public boolean eva luate(String value) { //回文判断 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("refer"); list.add("dad"); list.add("sdafds"); Iterator
it = new LoopingIterator<>(list); for(int i=0;i<5;i++) { System.out.println(it.next()); } } /** * 数组迭代器 */ public static void arrayIt() { System.out.println("=======数组迭代器========="); int[] str = {1,2,3,4,5}; //Iterator
it = new ArrayListIterator<>(str); //也可以指定起始索引和结束索引 Iterator
it = new ArrayListIterator<>(str,1,3); while(it.hasNext()) { System.out.println(it.next()); } } }
运行结果:
=======map迭代器=========
a-->baby
c-->doog
b-->ohyeah
=======去重迭代器=========
a
b
======= 自定义迭代器=========
abcba
dad
======= 循环迭代器=========
refer
dad
sdafds
refer
dad
=======数组迭代器=========
2
3
七、双向Map
package Collections;
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要求键与值都不能重复
* BidiMap接口 inverseBidiMap()反转方法
* 1、DualTreeBidiMap:有序
* 2、DualHashBidiMp:无序
*/
public class Demo07 {
public static void main(String[] args) {
hashMap();
treeMap();
}
/**
* 无序的双向Map
*/
public static void hashMap()
{
System.out.println("=======无序的双向Map=========");
BidiMap
map = new DualHashBidiMap<>(); map.put("bj", "bj@test.com"); map.put("ddssf", "ssdsfdsj@126.com"); map.put("dsf", "bfdsfdsj@qq.com"); //反转 System.out.println(map.inverseBidiMap().get("bj@test.com")); //遍历查看 MapIterator
it = map.inverseBidiMap().mapIterator(); while(it.hasNext()) { String key = it.next(); String value = it.getValue(); System.out.println(key+"-->"+value); } } /** * 有序的双向Map */ public static void treeMap() { System.out.println("=======有序的双向Map========="); BidiMap
map = new DualTreeBidiMap<>(); map.put("bj", "bj@test.com"); map.put("ddssf", "ssdsfdsj@126.com"); map.put("dsf", "bfdsfdsj@qq.com"); //遍历查看 MapIterator
it = map.inverseBidiMap().mapIterator(); while(it.hasNext()) { String key = it.next(); String value = it.getValue(); System.out.println(key+"-->"+value); } } }
运行结果:
=======无序的双向Map=========
bj
ssdsfdsj@126.com-->ddssf
bfdsfdsj@qq.com-->dsf
bj@test.com-->bj
=======有序的双向Map=========
bfdsfdsj@qq.com-->dsf
bj@test.com-->bj
ssdsfdsj@126.com-->ddssf
八、Bag包
package Collections;
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.HashMap 无序
* 2.TreeMap 有序
* 统计单词的出现次数
*/
public class Demo08 {
public static void main(String[] args) {
hashBag();
treeBag();
wordcount();//统计单词的出现次数
}
//无序的包
public static void hashBag()
{
System.out.println("=====无序的包========");
Bag
bag = new HashBag<>(); bag.add("a"); bag.add("a",5); bag.remove("a",2); bag.add("b"); bag.add("c"); Itera