Найти предметы по недвижимости в JLIST - PullRequest
0 голосов
/ 02 марта 2012

У меня есть 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 ]

1 голос
/ 02 марта 2012

Это немного зависит от варианта использования.Если вы просто хотите найти запись на стороне модели, вы можете продолжать цикл по ListModel или по структуре данных за ListModel, которая может быть обычной реализацией List, и затем вы можете использоватьметоды, предложенные haylem.

Если вы хотите выполнить поиск по вашему JList и представить результат поиска визуально пользователю (например, выделите их и выделите соответствующую запись), я настоятельно рекомендую посмотретьв проекте SwingX, который поддерживает это из коробки

1 голос
/ 02 марта 2012

Вы ищете типичный фильтр функциональность.

Я бы порекомендовал вам взглянуть на Google Guava:

Вы можете найти больше информации здесь или даже посмотрите на этот ТАК вопрос (ваш вопрос является дубликатом):

Обновление: Поскольку kleopatra заставила меня понять, что вы можете использовать обычную ListModel.

Вы можете указать собственную модель при создании JList, которая либо:

  • реализует интерфейс Collection или Iterable,
  • или предоставляет метод для возврата представления данных, отфильтрованных по желаемому свойству.
...