Фильтруемые коллекции на Java - PullRequest
1 голос
/ 18 июня 2011

Есть ли класс коллекции Java, который предоставляет метод фильтра? Я немного новичок в java, поэтому навигация по всем классам коллекций и все тонкие способы их взаимодействия с интерфейсами немного сбивают с толку. То, что я хотел бы, является коллекционным классом, который делает следующее:

FilterableCollection<SomeClass> collection = new FilterableCollection<SomeClass>();

// add some elements to the collection

// filter the collection and only keep certain elements
FilterableCollection<SomeClass> filtered_collection = collection.filter(
  new Filter<SomeClass>() {
    @Override
    public boolean test(SomeClass obj) {
      // determine whether obj passes the test or not
    }
  }
);

Ответы [ 2 ]

3 голосов
/ 18 июня 2011

Проверьте этот пост. Каков наилучший способ фильтрации Java-коллекции? У нее отличный пример, и он должен быть именно тем, что вы ищете.

1 голос
/ 18 июня 2011

Если вы привыкли к функциональным языкам, использование фильтра является естественным выбором.Однако в Java использование цикла является более простым, более естественным и быстрым выбором.

// filter the collection and only keep certain elements
List<SomeClass> filtered = new ArrayList<SomeClass>();
for(SomeClass sc: collection)
    if(/* determine whether sc passes the test*/)
        filtered.add(sc);

Вы можете использовать функциональные библиотеки, но в Java они почти всегда делают код более сложным.Java не очень хорошо поддерживает этот стиль программирования.(Это может измениться в будущем)

...