用Java简单实现C#的参数为Action<T> Function<T,boolean>扩展方法
直接上代码
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<T> { public static <T> void Each(List<T> list, Action<T> action) { for (T item : list) {
action.invoke(item);
}
} public static <T> T Last(List<T> list, Func<T> 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> T First(List<T> list, Func<T> func) { for (T item : list) {
if (func.invoke(item)) {
return item;
}
}
return null;
} public static <T> List<T> Where(List<T> list, Func<T> func) { List<T> tempList = new ArrayList<T>();
for (T item : list) {
if (func.invoke(item)) {
tempList.add(item);
}
}
return tempList;
} public interface Func<T> {
public boolean invoke(T o);
} public interface Action<T> {
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<Blog> list = new ArrayList<Blog>();
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<Blog> result = new ArrayList<Blog>();
final int id = 1;
// 查询
List<Blog> result2 = util.Where(list, new util.Func<Blog>() {
@Override
public boolean invoke(Blog blog) {
return blog.Name.contains("2");
}
});
//Java 8支持Lambda时,使用会相当简洁
// List<Blog> result2 = util.Where(list,(b)->b.Name.contains("2")); // 打印结果
util.Each(result2, new util.Action<Blog>() {
@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));
}
}
用Java简单实现C#的参数为Action<T> Function<T,boolean>扩展方法的更多相关文章
- 线程和线程池的理解与java简单例子
1.线程 (1)理解,线程是系统分配处理器时间资源的基本单元也是系统调用的基本单位,简单理解就是一个或多个线程组成了一个进程,进程就像爸爸,线程就像儿子,有时候爸爸一个人干不了活就生了几个儿子干活,会 ...
- java自定义注解实现前后台参数校验
2016.07.26 qq:992591601,欢迎交流 首先介绍些基本概念: Annotations(also known as metadata)provide a formalized way ...
- 多元线性回归----Java简单实现
http://www.cnblogs.com/wzm-xu/p/4062266.html 多元线性回归----Java简单实现 学习Andrew N.g的机器学习课程之后的简单实现. 课程地址:h ...
- Java简单工厂模式
Java简单工厂模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式.简 ...
- Java基础 -- 泛型之泛型参数
泛型机制常用的参数有3个: “?”代表任意类型.如果只指定了<?>,而没有extends,则默认是允许任意类. extends关键字声明了类型的上界,表示参数化的类型可能是所指定的类型,或 ...
- 2.5万字长文简单总结SpringMVC请求参数接收
这是公众号<Throwable文摘>发布的第22篇原创文章,暂时收录于专辑<架构与实战>.暂定下一篇发布的长文是<图文分析JUC同步器框架>,下一篇发布的短文是&l ...
- java简单词法分析器(源码下载)
java简单词法分析器 : http://files.cnblogs.com/files/hujunzheng/%E7%AE%80%E5%8D%95%E8%AF%8D%E6%B3%95%E5%88%8 ...
- !!转!!java 简单工厂模式
举两个例子以快速明白Java中的简单工厂模式: 女娲抟土造人话说:“天地开辟,未有人民,女娲抟土为人.”女娲需要用土造出一个个的人,但在女娲造出人之前,人的概念只存在于女娲的思想里面.女娲造人,这就是 ...
- Java 简单登录MVC
构建一个简单的基于MVC模式的JavaWeb 零晨三点半了,刚刚几个兄弟一起出去吼歌,才回来,这应该是我大学第二次去K歌,第一次是大一吧,之后每次兄弟喊我,我都不想去,因为我还是很害怕去KTV,或许是 ...
随机推荐
- SparkStreaming结合Kafka使用
spark自带的example中就有streaming结合kafka使用的案例: $SPARK_HOME/examples/src/main/scala/org/apache/spark/exampl ...
- 6-10k招几个.NET开发工程师(工作地点:成都)
目前工作的公司是一家做新加坡公司在成都的研发中心,目前有个项目组在做电子医疗记录(EMR)软件系统,在新加坡卖得还不错,由于以前版本的技术有障碍(主要采用WPF技术),目前老板决定投资用比较主流的技术 ...
- 如何让 Drupal 使用 Wordpress 形式的编辑代码?
如果你曾有过将 Wordpress 网站迁移到 Drupal 的经验,很可能客户会问的第一件事就是如何为 Drupal 添加编辑代码. Wordpress 中的 Shortcodes 插件让使用者可以 ...
- ASP.NET 5 之 错误诊断和它的中间件们
ASP.NET5包含若干个新的功能来辅助诊断错误,可以在Startup类中简单的为应用程序错误配置不同的处理程序或者显示关于应用程序的附加信息. 配置错误处理页面 在ASP.NET5中,在Startu ...
- 架构设计--逻辑层 vs 物理层
如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 Layer 和Tier都是层,但是他们所表现的含义不同,Tier指的是软件系统中物理 ...
- 【练习】数据文件的更改:改名或改路径 users01.dbf-->users01_bak.dbf
方法一:1.将数据文件的状态offline SQL> select file_name,tablespace_name from dba_data_files where file_name l ...
- Js获取当前日期时间及其它操作(转)
var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份(4位,1 ...
- Mongodb解决不能连接到服务器的错误
注:这次解决的这个问题的前提是之前打开MongoDB之后,再次使用的时候无法连接了(使用mongod和mongo都不对) 闲话:遇到这种问题真是让人恼火,所以说句sun of beach,好了~爽 正 ...
- C# 共用的返回数据类
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Dscf ...
- JS常用的设计模式(17)—— 状态模式
状态模式主要可以用于这种场景 1 一个对象的行为取决于它的状态 2 一个操作中含有庞大的条件分支语句 回想下街头霸王的游戏. 隆有走动,攻击,防御,跌倒,跳跃等等多种状态,而这些状态之间既有联系又互相 ...