Java JDK1.8四大接口

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();
	}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值