- 浏览: 2473359 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (574)
- Book (62)
- Architecture (6)
- Java (39)
- Taobao (41)
- Distributed (4)
- Life (72)
- Database (7)
- Spring (16)
- Photography (15)
- Bicycle (41)
- Test (20)
- jBPM (8)
- Business (12)
- Movie (3)
- Ajax (15)
- Code (7)
- Eclipse (96)
- VIM (2)
- Music (6)
- Groovy (10)
- AutoHotKey (3)
- Dorado (10)
- Maven (7)
- Scrum (5)
- English (20)
- Financial (12)
- OSGi (3)
- Other (4)
- Tool (6)
- Browser (1)
- PPT (1)
- Project Management (4)
- Agile (6)
- Nosql (1)
- Search engine (6)
- Shell (2)
- Open Source (4)
- Storm (10)
- Guava (3)
- Baby (1)
- netty (1)
- Algorithm (1)
- Linux (1)
- Python (2)
最新评论
-
roy2011a:
https://github.com/ebottabi/sto ...
storm的序列化问题及与spring的结合方式 -
roy2011a:
能抗能打 写道哥们儿,你好!能共享下那个storm与sprin ...
storm的序列化问题及与spring的结合方式 -
Alick1:
兄弟,你之前是不是在深圳的正阳公司呆过啊?
storm的ack和fail -
liuleixwd:
先点个赞,写的非常好!有个问题请教下,如果我再bolt里不用e ...
storm的ack和fail -
yao-dd:
solr的facet查询
Predicate 是jakarta commons工具包中一个非常有用的接口, 它主要在对容器类遍历的时候做一些"手脚", 比如根据一定的规则, 逻辑, 对容器对象进行过滤.
在实际开发中我们就碰到一个类似的场景:
一个商品可以根据发往所在地来设置邮费项, 比如一个手机电池从上海发往北京和发往新疆的邮费是不一样的, 于是我们可以设置一些邮费模板项, 但是这些邮费模板项必须是唯一, 比如我设置了北京, 沈阳, 天津三个目的地的邮费都是5块, 接着我又设置了沈阳, 黑龙江的邮费是6块, 则最终得到的邮费项分别是:北京, 天津邮费为5块, 沈阳, 黑龙江为6块, 即能自动针对目的地进行去重处理.去重之后必须遵循后添加的邮费项替换已有的邮费项.
public class RemoveDuplicateDestinationPredicate implements Predicate { class UniquePostageItem { String dest; int mode; UniquePostageItem(PostageItem item) { this.dest = item.getDestination(); this.mode = item.getMode(); } @Override public boolean equals(Object obj) { return EqualsBuilder.reflectionEquals(this, obj); } @Override public int hashCode() { return HashCodeBuilder.reflectionHashCode(this); } } List<PostageItem> completeList = new ArrayList<PostageItem>(); Predicate up = new UniquePredicate(); public boolean evaluate(Object object) { PostageItem current = (PostageItem) object; // 初级过滤去重 if (!up.evaluate(new UniquePostageItem(current))) { return false; } // 对item中的每一个destincation进行过滤去重 String[] currentDests = filterDuplicate(current); // 过滤之后目的地为空的直接排除 String dest = StringUtils.join(currentDests); if (StringUtils.isEmpty(dest)) { return false; } current.setDestination(dest); completeList.add(current); return true; } private String[] filterDuplicate(PostageItem current) { String[] currentDests = current.getDesctinations(); int currentMode = current.getMode(); boolean found = false; for (int i = 0; i < currentDests.length; i++) { String currentDest = currentDests[i]; for (PostageItem each : completeList) { if (each.getMode() == currentMode) { String[] eachDests = each.getDesctinations(); for (String otherDest : eachDests) { if (StringUtils.equals(currentDest, otherDest)) { currentDests[i] = ""; found = true; break; } } if (found) { break; } } } } return currentDests; } }
用法如下:
private static void checkPostageItems(Postage postage, Result<Postage> result) { List<PostageItem> uniqueItems = new ArrayList<PostageItem>(); for (Iterator<PostageItem> it = removeDuplicateDestinationIterator(items); it.hasNext();) { final PostageItem item = it.next(); uniqueItems.add(item); ... } // 将顺序还原 Collections.sort(uniqueItems, new Comparator<PostageItem>() { public int compare(PostageItem o1, PostageItem o2) { return o1.getIndex() - o2.getIndex(); } }); postage.setPostageItems(uniqueItems); } protected static Iterator<PostageItem> removeDuplicateDestinationIterator(final List<PostageItem> items) { Collections.sort(items, new Comparator<PostageItem>() { public int compare(PostageItem o1, PostageItem o2) { return o2.getIndex() - o1.getIndex(); } }); return new FilterIterator(items.iterator(), new RemoveDuplicateDestinationPredicate()); }
发表评论
-
使用Externalization更高效的实现java对象序列化
2012-04-04 22:38 3152Externalization没用过, 它通过牺牲默认序列化的 ... -
关于java的检查异常和非检查异常
2012-04-04 21:31 4980这里有一个关于java的检查异常和非检查异常的观点, 我比较赞 ... -
使用ThreadLocal保证DateFormat线程安全
2012-04-03 06:45 3606大家都知道DateFormat是线程非安全的, 一般在多线程环 ... -
使用枚举实现一个状态机
2012-04-02 23:14 3945非常巧妙的一个使用枚举的例子.原文见这里 interface ... -
一个同步队列例子
2012-04-02 21:35 1578这个用的也比较少, 做一个参考, 原文见这里 private ... -
一个读写锁的例子
2012-04-02 21:20 1534用的比较少, 做一个参考. 原文在这里 public clas ... -
如何计算一个合适的线程池大小参数
2012-04-02 20:57 9072原文在这里 下面是一个计算的框架代码: /** * A ... -
正确使用日志的10个技巧
2012-02-11 21:13 28861做一个苦逼的Java攻城师, 我们除了关心系统的架构这种hig ... -
Java编程最差实践
2012-02-04 17:54 26671原文地址:http://www.odi.ch/prog/des ... -
利用jOOR简化Java 反射使用
2012-01-15 20:39 5159原文:http://lukaseder.wordpress.c ... -
《Java Performance》书评
2012-01-15 18:32 2967原文: http://java.dzone.com/rev ... -
《细说Java》读书笔记
2011-10-05 15:01 1998国人写的, 感觉是一 ... -
《Java开发超级工具集》读书笔记
2011-09-28 08:59 2102"工欲善其事必先利其器", 在平时的开发 ... -
《effective java》 读书笔记
2011-07-02 14:52 7608读第一版已经是好几年前的事儿了, 现在想起来也没什么印象, ... -
用java实现"awk -d"功能(保留多行重复)
2010-06-07 21:48 3078一般用过linux脚本的都知道"awk -d&quo ... -
关于方法返回值的两种处理模式
2010-05-13 09:06 2035目前在处理返回值方面, ... -
JVM调优汇总
2010-02-21 19:18 14419参考网址 http://pengjiaheng.spaces. ... -
log4j的输出转换模式
2009-12-12 10:02 1280转换模式(conversion pattern)为" ... -
java正则表达式用法举例
2009-12-08 11:27 4523java正则表达式真难用啊, 这里整理一个java正则表达式用 ... -
Ibatis TypeHandler使用总结
2009-11-25 19:33 16554ibatis中有一个TypeHandler(准确的说应该是Ty ...
相关推荐
Predicate是编程语言中的一种常见概念,特别是在面向对象的语言如Java、C#等中,它代表一个可以返回布尔值的函数或方法,常用于过滤、查询数据。Predicate的主要用途是作为参数传递给各种高阶函数,比如`filter()`、...
标题中的"ConsoleApplication2...通过分析提供的代码(如果能访问的话),我们可以更深入地了解Predicate的用法和它相比Delegate的优势。如果你想要学习或理解Predicate在C#中的应用,这个项目将是一个很好的参考实例。
谓词委托通常与泛型委托`Predicate<T>`一起使用,其中`T`代表委托处理的数据类型。 首先,让我们了解一下谓词。在逻辑学中,谓词是对实体(如对象或值)进行判断的表达式,它返回真或假。在编程中,谓词是一个返回...
其中,四个关键的接口——Consumer、Supplier、Predicate和Function,是Lambda表达式的重要组成部分,帮助开发者处理各种操作,尤其是处理集合数据时。下面将详细讲解这四个接口及其在实际开发中的应用。 1. **...
- **设计模式**:这样设计可能允许库的作者更好地控制和区分函数的行为,或者为了保持API的一致性,与其他方法的用法保持一致。 总之,理解`Predicate<T>`和`Func, bool>`的区别对于编写高效且易于维护的C#代码至关...
1. **谓词的基本用法** 谓词通常用作`test()`方法,接收一个对象作为参数,并返回一个布尔结果。例如,我们可以创建一个谓词来检查一个整数是否为偶数: ```java Predicate<Integer> isEven = number -> number %...
本文以实例形式分析了C#中Predicate与Func泛型委托的用法,分享给大家供大家参考之用。具体如下: 先来看看下面的例子: static void Main(string[] args) { List<string> l = new List(); l.Add(a); l.Add(b); ...
### 命题逻辑与谓词逻辑:一种论证模型 #### 一、引言 《命题与谓词逻辑:一种论证模型》由德里克·戈尔德雷(Derek Goldrei)撰写,该书是一部关于数学逻辑领域的系统性教材。书中通过详细阐述命题逻辑与谓词逻辑...
离散数学第一章predicate记录
Java Predicate及Consumer接口函数代码实现解析 Java Predicate及Consumer接口函数代码实现解析主要介绍了Java Predicate及Consumer接口函数代码实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作...
传入的Predicate-Definition对象的值也应该是Predicate-Definitions,用于针对测试对象的相应键进行测试。 用法-想要测试手边对象的属性时。 3.数组 传递数组是选项1和2的组合,以便在测试对象本身及其属性上运行...
首先,让我们了解`find_if`的基本用法。`find_if`的签名如下: ```cpp template , class Predicate> InputIterator find_if(InputIterator first, InputIterator last, Predicate pred); ``` 在这里,`first`和`...
在深入探讨`List.Find()`用法之前,我们首先需要理解`List`类和泛型(Generics)在C#中的作用。`List<T>`是.NET Framework中提供的一个动态数组类,它属于`System.Collections.Generic`命名空间,允许我们存储任何...
为了满足这种需求,本研究引入并构建了一种名为谓词全同态加密(Predicate Fully Homomorphic Encryption,简称PFHE)的新型原语。PFHE的核心优势在于它能够在不泄露任何关于处理数据的额外信息给云计算服务器或未经...
Predicate condition = builder.equal(root.get("name"), "John"); criteria.where(condition); List<User> users = entityManager.createQuery(criteria).getResultList(); ``` **5. 事务处理** 在JPA中,事务...
用法 使用evaluatePredicateString()评估谓词字符串。 在解析之前验证字符串。 用作谓词(即返回true或false)。 使用createPredicateRegExp()创建可验证用户输入为谓词字符串的正则表达式。 例子: import { ...
断言函数,当 predicate 的结果为 false 的时候抛出 AssertFailed 异常, msg 错误信息可选。 返回当前日期对象 java.util.Date 返回一个介于 [0, 1) 的随机数,结果为 double 类型 返回一个介于 [0, n) 的随机数,...
本资源提供的"predicate.rar"压缩包聚焦于一种基于区域的分裂合并(Region-based Split-Merge)图像分割方法,这是一种经典的图像分割算法,适用于复杂场景的图像分析。 在压缩包内,有三个MATLAB编写的M文件,分别...