我有一个JList peopleList,其中填充了Person类
的对象class Person
{
private String name;
private String age;
private void setName(String value)
{
name = value;
}
private String getName()
{
return name;
}
}
目前找到一个姓名的人
public boolean personByNameExists(String name)
{
for(int index = 0 ; index < peopleList .getModel().getSize() ; index ++)
{
Person pl = (Person) peopleList .getModel().getElementAt(index);
if( p1.getName().equals(name))
{
return true;
}
}
}
我想知道是否有办法在整个列表中执行相同的操作。我是来自.Net的后台和C#我会使用LINQ在Java中有类似的东西吗?
答案 0 :(得分:1)
您正在寻找典型的filter功能。
我建议您查看Google Guava:
Collections2.filter(Collection, Predicate)
,Iterables.filter(Iterable, Class)
,Iterables.filter(Iterable, Predicate)
您可以找到更多信息here,甚至可以查看此问题(您的问题是重复的):
更新:正如kleopatra让我意识到的那样,您可能正在使用正常的ListModel
。
您可以在创建JList时指定自定义模型:
答案 1 :(得分:1)
这取决于用例。如果您只是想在模型一侧找到一个条目,您可以继续循环ListModel
,或循环遍历ListModel
后面的数据结构,这可以是常规的List
实施,然后你可以使用haylem建议的方法。
如果您想搜索JList
,并在视觉上向用户显示搜索结果(例如突出显示它们并滚动到相关条目),我强烈建议您查看支持的SwingX项目这个开箱即用的