在JLIST中按房源查找物品

时间:2012-03-02 15:20:25

标签: java swing iteration jlist

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

2 个答案:

答案 0 :(得分:1)

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

我建议您查看Google Guava:

您可以找到更多信息here,甚至可以查看此问题(您的问题是重复的):

更新:正如kleopatra让我意识到的那样,您可能正在使用正常的ListModel

您可以在创建JList时指定自定义模型:

  • 实现了Collection或Iterable接口,
  • 或提供一种方法来返回由所需属性过滤的数据视图。

答案 1 :(得分:1)

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

如果您想搜索JList,并在视觉上向用户显示搜索结果(例如突出显示它们并滚动到相关条目),我强烈建议您查看支持的SwingX项目这个开箱即用的