2012-03-02 3 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; 
    } 
} 

Current, чтобы найти человека, с именем я

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

Возможный дубликат [список фильтров и сортировки с использованием коллекций Google] (http://stackoverflow.com/questions/2312849/filter-and-sort-list-using-google-collections) – haylem

ответ

1

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

Я рекомендую вам взглянуть на Google гуавы'S:

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

Update: Как Kleopatra заставил меня понять, вы можете использовать обычный ListModel.

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

  • реализует коллекцию или Iterable интерфейс,
  • или предоставляет метод возвращает представление данных, отфильтрованных Вы хотеть.
+0

afaics, вопрос о Swing ListModel – kleopatra

+0

@kleopatra: черт, вы правы. У меня слишком много было для этого адаптера. – haylem

+0

Вы можете использовать вышеуказанные методы, если модель вашего 'JList' поддерживается« списком », который не является надуманным – Robin

1

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

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

Смежные вопросы