查找的jList
问题描述:
地产项目我有一个JList peopleList填充Person类查找的jList
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中有类似的东西吗?
答
您正在寻找典型的filter功能。
我建议你看一下谷歌番石榴的:
-
Collections2.filter(Collection, Predicate)
, -
Iterables.filter(Iterable, Class)
, - 或
Iterables.filter(Iterable, Predicate)
你可以找到更多信息here甚至看这个SO问题(你的问题是重复的):
更新:作为克列奥帕特拉让我意识到,你可能会使用一个正常ListModel
。
创建JList中时,你可以specifiy自定义模型,要么:
- 实现集合或可迭代接口,
- 或提供了一个方法返回由酒店你过滤数据的视图想。
答
这取决于用例。如果您只想在模型一侧找到条目,则可以继续循环使用ListModel
,或循环执行ListModel
后面的数据结构,该数据结构可以是常规的List
实现,然后您可以使用haylem建议的方法。
如果你想在你的JList
上搜索,并以可视化的方式向用户显示搜索结果(例如突出显示它们并滚动到相关条目),我强烈推荐看一下SwingX项目,现成的
可能的重复[过滤和排序列表使用谷歌收藏](http://stackoverflow.com/questions/2312849/filter-and-sort-list-using-google-collections) – haylem 2012-03-02 15:41:15