在Java程序中,我有一個我想根據特定屬性進行過濾的bean列表。使用Google Guava過濾JavaBeans的列表
例如,假設我有一個Person,一個JavaBean的列表,其中Person有很多屬性,其中包括'name'。
我也有一個名字列表。
現在我想查找名稱在名稱列表中的所有人員。
使用Google Guava執行此過濾器的最佳方法是什麼?
到目前爲止,我已經想過將番石榴和Apache beanutils結合起來,但看起來並不高雅。
我也在這裏找到了一個反射擴展庫:http://code.google.com/p/guava-reflection/,但我不確定如何使用它(幾乎沒有文檔)。
有什麼想法?
p.s.你能告訴我真的想念Python列表理解嗎?
這個解決方案和我的主要區別在於,這個解決方案創建了一個包含過濾人員的新列表,而我的原始列表創建了一個視圖。無論哪一個都是可取的取決於用例。 – 2011-12-27 08:04:44
是的,這取決於用例 - 但我會說在90%的用例中,可讀性改進大於小性能優勢。 – 2011-12-28 17:53:54
你似乎認爲只有兩個妥協方面是可讀性和性能。正確性比兩種(假定的)可讀性和性能都重要得多。如果你這樣做,你不僅要測試你的謂詞邏輯,而且要測試你的過濾邏輯。你不必要地增加了一倍(至少因爲引入了可變狀態)可能出錯的事情的數量。通過在代碼庫中進行篩選的次數乘以此數量......爲什麼要這樣工作? – 2012-01-19 02:35:46