2015-08-25 3 views
0

У меня есть ArrayList<Slot>, этот Slot класс имеет общедоступное имущество типа Upload, который имеет разные статусы. Я хочу фильтровать эти статусы, поэтому только извлекайте слоты из списка, где slots.upload.currentStatus что-то равняется.Фильтр через ArrayList правильно

Пытаясь что-то вроде этого

Collection<Slot> filtered = Collections2.filter(this.slots, ??????)); 

Не могли бы вы помочь?

+0

Какую версию Java вы используете? Если Java 8, то это тривиально. – Edd

+0

версия 8 Я использую. Также я новичок в java, имеет ли значение, что в этом случае у меня есть ArrayList, а не коллекция? –

ответ

0

Вот простой пример, который показывает один из способов фильтрации коллекции (в данном случае List, как ваша) в Java 8, используя Stream (Более подробную информацию об использовании потоков можно найти here):

public static void main(String[] args) { 
    List<Slot> slots = Arrays.asList(new Slot(Upload.YAY), new Slot(Upload.NAY), 
      new Slot(Upload.YAY), new Slot(Upload.YAY)); 

    List<Slot> yaySlots = slots.stream() 
      .filter(slot -> slot.upload == Upload.YAY) 
      .collect(Collectors.toList()); 
} 

В вашем случае фильтр может быть что-то вроде:

slot -> slot.upload.currentStatus.equals(INTERESTING_STATUS) 
+0

Downvotes заставляют меня грустить! :-(:-p Это должно сработать, не так ли? У меня нет компилятора, но это довольно простой пример ... – Edd

+0

Downvotes заставляют меня тоже грустить. Спасибо, например, каждый кусок достает меня ближе –

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