有什麼方法(方法,lambda或優雅的結構)在列表中找到基於給定比較器的元素?List ::包含比較器
我寫了這樣的方法:
private static <T> boolean contains(List<T> list, T item, Comparator<? super T> comparator) {
return list.stream()
.anyMatch(listItem -> comparator.compare(listItem, item) == 0
);
}
但我正在尋找的東西,這將是更優雅來取代它。
我不想添加任何依賴關係,所以沒有番石榴,「公地」,等我真的想找一個漂亮的方式做到這一點在Java中8
編輯:一些例子是什麼我會考慮更優雅(這裏是使用代碼):
// sadly, this method doesn't exist
// nor is there a static one in Collections
// but maybe you can think of another way?
if (list.containsSame(item, comparator)) {
// ...
}
那麼,你寫的代碼怎麼不滿足你?它看起來很好(雖然在簽名中我會提供一個「比較器 super T>」代替) – fge 2014-12-03 10:51:35
我覺得可以通過智能使用平臺或語言來改善它。 – ymajoros 2014-12-03 11:31:05
與您自己的比較器一起使用流是幾乎所有人都稱之爲「框架的巧妙使用」。由於lambda,這也是最「漂亮」的方式。你還能想要什麼? – specializt 2014-12-03 11:37:03