Iterator<T>接口 1.5之前统一的迭代集合方式
Function<T>接口 表示接受一个参数并产生结果的函数
Supplier接口<T> 代表结果供应商
Predicate接口<T> 断言接口
package com.chen;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
/**
* 集合的输出(迭代)
* @author 11010
*
*/
public class IteratorDemo {
//断言接口
private static void PredicateTest() {
List<String> list = Arrays.asList("tom","mark","lily","jony");
List<String> result=filter(list,(s)->s.contains("m"));
result.forEach(System.out::println);
}
private static List<String> filter(List<String> list,Predicate<String> p){
List<String> results = new ArrayList<>();
for (String s : list) {
if(p.test(s)) {//测试是否符合要求
results.add(s);
}
}
return results;
}
//Supplier 代表结果供应商
private static void supplierTest() {
List<Integer> list = getNums(10,()->(int)(Math.random()*100));
list.forEach(System.out::println);
}
private static List<Integer> getNums(int num,Supplier<Integer> sup) {
List<Integer> list =new ArrayList<>();
for(int i=0;i<num;i++) {
list.add(sup.get());
}
return list;
}
//表示接受一个参数并产生结果的函数
private static void functionTest() {
String s = stringToUp("xiaochen", (str)->str.toUpperCase());
System.out.println(s);
}
private static String stringToUp(String str,Function<String, String> f) {
return f.apply(str);
}
/**
* JDK1.8新的迭代方法
*/
private static void foreach() {
List<String> list = new ArrayList<>();
list.add("tom");
list.add("tony");
list.add("job");
list.add("lilys");
//lambda表达式 让代码更简洁
list.forEach(s->System.out.println(s));
// list.forEach(System.out::println); 两种都行
}
private static void enumeration() {
Vector<String> vs = new Vector<>();
vs.add("tom");
vs.add("tony");
vs.add("job");
vs.add("lily");
Enumeration<String> es = vs.elements();
while(es.hasMoreElements()) {
System.out.println(es.nextElement());
}
}
//foreach(1.5后)
private static void foreach(Collection<Cat> c) {
for(Cat cat:c) {
System.out.println(cat);
}
}
//iterator(1.5之前统一的迭代集合方式)
private static void iterator(Collection<Cat> c) {
Iterator<Cat> iter = c.iterator();
while(iter.hasNext()) {
System.out.println(iter.next());
}
}
public static void main(String[] args) {
List<Cat> list = new ArrayList<>();
Cat c1 = new Cat("喵喵",5,"公");
Cat c2 = new Cat("咪咪",3,"母");
Cat c3 = new Cat("奶茶",4,"母");
Cat c4 = new Cat("喵喵",5,"公");
list.add(c1);
list.add(c2);
list.add(c3);
list.add(c4);
// foreach(list);
// iterator(list);
// enumeration();
// foreach();
// functionTest();
// supplierTest();
PredicateTest();
}
}