博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用Java简单实现C#的参数为Action<T> Function<T,boolean>扩展方法
阅读量:5305 次
发布时间:2019-06-14

本文共 2201 字,大约阅读时间需要 7 分钟。

直接上代码

Blog.Java

public class Blog {        public Blog(int id,String name)        {            Id=id;            Name=name;        }        public int Id;        public String Name;            }

util.java

import java.util.ArrayList;import java.util.List;public final class util
{ public static
void Each(List
list, Action
action) { for (T item : list) { action.invoke(item); } } public static
T Last(List
list, Func
func) { for (int i = list.size() - 1; i > -1; i--) { if (func.invoke(list.get(i))) { return list.get(i); } } return null; } public static
T First(List
list, Func
func) { for (T item : list) { if (func.invoke(item)) { return item; } } return null; } public static
List
Where(List
list, Func
func) { List
tempList = new ArrayList
(); for (T item : list) { if (func.invoke(item)) { tempList.add(item); } } return tempList; } public interface Func
{ public boolean invoke(T o); } public interface Action
{ public void invoke(T o); }}

测试代码

import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class progrmas {    public static void main(String[] args) {        List
list = new ArrayList
(); list.add(new Blog(1, "blog 1")); list.add(new Blog(2, "blog 2")); list.add(new Blog(3, "blog 2")); list.add(new Blog(4, "blog 4")); List
result = new ArrayList
(); final int id = 1; // 查询 List
result2 = util.Where(list, new util.Func
() { @Override public boolean invoke(Blog blog) { return blog.Name.contains("2"); } }); //Java 8支持Lambda时,使用会相当简洁 // List
result2 = util.Where(list,(b)->b.Name.contains("2")); // 打印结果 util.Each(result2, new util.Action
() { @Override public void invoke(Blog o) { System.out.print(String.valueOf(o.Id) + "------" + o.Name); } }); //Java 8支持Lambda时,使用会相当简洁 // util.Each(result2,(b)->System.out.println(String.valueOf(b.Id) +"------" + b.Name)); }}

 

转载于:https://www.cnblogs.com/piaolingzxh/p/4118967.html

你可能感兴趣的文章
Hyper-V虚拟机上安装一个图形界面的Linux系统
查看>>
JavaScript跨域总结与解决办法
查看>>
Hover功能
查看>>
[LeetCode] Jump Game II
查看>>
js千分位处理
查看>>
js常用的方法
查看>>
Mac---------三指拖移
查看>>
关于VMare中安装Ubuntu的一些说明
查看>>
字符串类型的相互转换
查看>>
day57 手写socket、路由系统、响应一个动态内容、链接数据库、django配置、及应用、DNS服务器...
查看>>
无法执行该操作,因为链接服务器 "xxxxx" 的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务 ....
查看>>
YARN的运行机制
查看>>
apache的rewrite机制配置
查看>>
244. Shortest Word Distance II
查看>>
js学习总结----响应式布局基础
查看>>
Vue 浅析与实践
查看>>
漫谈 SLAM 技术(上)
查看>>
java集合(1)
查看>>
win8 metro MediaCapture 类
查看>>
OpenGL【2 坐标转换】
查看>>