predicate 是jakarta commons工具包中乙個非常有用的介面, 它主要在對容器類遍歷的時候做一些"手腳", 比如根據一定的規則, 邏輯, 對容器物件進行過濾.
在實際開發中我們就碰到乙個類似的場景:
乙個商品可以根據發往所在地來設定郵費項, 比如乙個手機電池從上海發往北京和發往新疆的郵費是不一樣的, 於是我們可以設定一些郵費模板項, 但是這些郵費模板項必須是唯一, 比如我設定了北京, 瀋陽, 天津三個目的地的郵費都是5塊, 接著我又設定了瀋陽, 黑龍江的郵費是6塊, 則最終得到的郵費項分別是:北京, 天津郵費為5塊, 瀋陽, 黑龍江為6塊, 即能自動針對目的地進行去重處理.去重之後必須遵循後新增的郵費項替換已有的郵費項.
public class removeduplicatedestinationpredicate implements predicate
@override
public boolean equals(object obj)
@override
public int hashcode()
}listcompletelist = new arraylist();
predicate up = new uniquepredicate();
public boolean evaluate(object object)
// 對item中的每乙個destincation進行過濾去重
string currentdests = filterduplicate(current);
// 過濾之後目的地為空的直接排除
string dest = stringutils.join(currentdests);
if (stringutils.isempty(dest))
current.setdestination(dest);
completelist.add(current);
return true;
}private string filterduplicate(postageitem current)
}if (found) }}
}return currentdests;
}}
用法如下:
private static void checkpostageitems(postage postage, resultresult)
// 將順序還原
collections.sort(uniqueitems, new comparator()
});postage.setpostageitems(uniqueitems);
}protected static iteratorremoveduplicatedestinationiterator(final listitems)
});return new filteriterator(items.iterator(), new removeduplicatedestinationpredicate());
}
C placement new 用法舉例
在處理記憶體分配的時候,c 程式設計師會用 new 操作符 operator new 來分配記憶體,並用 delete 操作符 operator delete 來釋放記憶體。這是乙個 new 操作符的例子。class ctest 分配乙個物件 ctest ptest new test 分配乙個有十個...
Struts nested nest 用法舉例
用法舉例 formbean定義 public class personform extends actionform public person getperson public void setperson person person person類 public class person pub...
Mysql limit offset用法舉例
本文內容 mysql limit offset示例 例1,假設資料庫表student存在13條資料。示例 語句1 select from student limit 9,4 語句2 slect from student limit 4 offset 9 語句1和2均返回表student的第10 11...