例如:
我在 UI 端有一个这样的表:
这是上面显示的所有数据的列表:
List<MyBean> myList;
现在我想按 categoryName
搜索, languageID
或 categoryID
使用这样的方法:
private List<MyBean> search(List<MyBean> myList, String columnName, String criteria)
然后我只需执行以下操作以获得符合我的条件的结果:
第一个案例: List<Bean> results = this.search(myList, "categoryName", "Dog H");
第二种情况: List<Bean> results = this.search(myList, "categoryName", "Dog House");
(此时 results
列表将在两种情况下返回 3 个元素 -- 根据上表)。
这有可能实现吗?正如你们所看到的,这是一种类似于%LIKE%
的搜索。来自 SQL
的函数但专注于java.util.List
提前致谢。
最佳答案
我使用以下方法解决了我的问题:
Hamcrest (hamcrest-all-1.3.jar) -- http://hamcrest.googlecode.com/files/hamcrest-all-1.3.jar
Lambdaj (lambdaj-2.4-with-dependencies.jar) -- http://lambdaj.googlecode.com/files/lambdaj-2.4-with-dependencies.jar
然后我就这样导入了下面的命名空间:
import static ch.lambdaj.Lambda.*;
然后使用这个根据我的标准得到结果:
List<MyBean> results = select(myList, having(on(MyBean.class).getCategoryName(), org.hamcrest.Matchers.containsString("Dog H")));
所以,在那行代码中,我传递了 myList
、“column”
和 criteria
,正如我在问题中所要求的那样。
该行的其余代码很容易理解,所以我不会写。
希望这对其他人也有帮助。
关于java - 如何在 java.Util.List<Type> 中按条件搜索元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11839073/