2014-06-19 14 views
12

Ho un ArrayList<Integer>. Voglio verificare se tutti gli elementi dell'elenco sono maggiori o minori rispetto a determinate condizioni. Posso farlo iterando su ogni elemento. Ma voglio sapere se c'è qualche metodo nella classe Collection per ottenere la risposta come possiamo fare per trovare il massimo o il minimo con Collections.max() e Collections.min() rispettivamente.come verificare se tutti gli elementi della raccolta java corrispondono ad alcune condizioni?

+0

Se non sbaglio, Collections.max() e Collections.min() iterare anche attraverso ogni elemento. –

+0

'max' e' min' non hanno senso in sé, perché 'Collection' è un tipo generico. per esempio se hai 'Collection ', quali sarebbero 'max' e' min'? dai un'occhiata qui: http://stackoverflow.com/questions/122105/questo-è-il-best-way-to-filter-a-java-collection – logoff

risposta

25

Se si dispone di Java 8, allMatch utilizzare la funzione di flusso (reference):

ArrayList<Integer> col = ...; 
col.stream().allMatch(i -> i>0); //for example all integers bigger than zero 
+0

Non lo sapevo, sembra utile! : D –

+0

molto utile..qualcosa di nuovo per me..Grazie – Chirag

+0

Non riesco a capire come usare questo predicato e passarlo all'argomento. Qualcuno può darmi una dimostrazione? – Chirag

1

Non è possibile controllare i valori senza iterazione su tutti gli elementi della lista .

for(Integer value : myArrayList){ 

    if(value > MY_MIN_VALUE){ 
     // do my job 
    } 
} 

Spero che questo vi aiuterà

+0

Voglio fare il mio lavoro solo se tutti gli elementi dell'elenco> della mia condizione – Chirag

5

È possibile utilizzare Google guaiave Iterables.all

Iterables.all(collection, new Predicate() { 
    boolean apply(T element) { 
     .... //check your condition 
    } 
} 
Problemi correlati