【发布时间】:2013-10-02 11:13:58
【问题描述】:
我想对列表中的对象的属性进行搜索。
class Test
{
int id;
int name;
int address;
//Setter and getter method of properties
}
public List<Test> searchData(String serachText, String propertyName)
{
//Write code to search data from list
}
输入参数:
searchData("val1", "name");
searchData("val2", ("address");
我想使用Collections.binarySearch,但我不知道如何进行dynamic comparator 搜索。
实现这种功能的正确方法是什么?
是否可以使用Collections.binarySearch 或任何其他具有良好代码质量和更好性能 的好方法来实现它?
编辑
public List<Test> searchData(String serachText, String propertyName)
{
List<Test> finalSearch=new ArrayList<Test>();
//Write code to search data
for(Test test:testList)
{
if(propertyName.equals("name"))
{
if(serachText.equals(test.getName())
{
finalSearch.add(test);
}
///Same code for others
}
}
}
【问题讨论】:
-
首先使用普通的旧循环编写搜索。然后研究你写的内容,找出比较器的组成部分。
-
您能详细说明一下吗?你的意思是循环列表并根据属性比较搜索值。是吗?
-
所以你知道需要使用
Comparator,但不知道如何使用?你为什么不学习? -
因为是三个字段,所以不能简单的使用
binarySearch。要使用binarySearch,必须对列表进行排序。您不能对三个字段的列表进行排序。 -
我编辑了我的代码。这是正确的方法吗?这只是一个示例,实际上我在 bean 中有 25 个属性。
标签: java list search comparator