2012-03-02 77 views
0

地产项目我有一个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中有类似的东西吗?

+0

可能的重复[过滤和排序列表使用谷歌收藏](http://stackoverflow.com/questions/2312849/filter-and-sort-list-using-google-collections) – haylem 2012-03-02 15:41:15

回答

1

您正在寻找典型的filter功能。

我建议你看一下谷歌番石榴的:

你可以找到更多信息here甚至看这个SO问题(你的问题是重复的):

更新:作为克列奥帕特拉让我意识到,你可能会使用一个正常ListModel

创建JList中时,你可以specifiy自定义模型,要么:

  • 实现集合或可迭代接口,
  • 或提供了一个方法返回由酒店你过滤数据的视图想。
+0

afaics,问题是关于Swing ListModel – kleopatra 2012-03-02 15:51:02

+0

@kleopatra:darn,你说得对。我已经习惯了为此拥有一个适配器。 – haylem 2012-03-02 16:04:43

+0

如果你的'JList'的模型由'List'支持,这不是那么牵强的,你可以使用上面的方法 – Robin 2012-03-02 16:10:54

1

这取决于用例。如果您只想在模型一侧找到条目,则可以继续循环使用ListModel,或循环执行ListModel后面的数据结构,该数据结构可以是常规的List实现,然后您可以使用haylem建议的方法。

如果你想在你的JList上搜索,并以可视化的方式向用户显示搜索结果(例如突出显示它们并滚动到相关条目),我强烈推荐看一下SwingX项目,现成的