Ho una collezione e vorrei sapere se almeno un elemento soddisfa alcune condizioni. In sostanza, cosa fa some in JavaScript, mi piacerebbe fare su una collezione!c'è un equivalente Java al metodo "alcuni" di Javascript?
risposta
Partenza Iterables
classe Guava s' e la sua any()
attuazione.
Più o meno la stessa cosa come l'esempio Commons Collezioni nel altra risposta, ma genericized:
List<String> strings = Arrays.asList("ohai", "wat", "fuuuu", "kthxbai");
boolean well = Iterables.any(strings, new Predicate<String>() {
@Override public boolean apply(@Nullable String s) {
return s.equalsIgnoreCase("fuuuu");
}
});
System.out.printf("Do any match? %s%n", well ? "Yep" : "Nope");
Java non ha questa funzione integrata. Javascript's some()
accetta un puntatore a funzione come argomento, che non è qualcosa supportato nativamente in Java. Ma dovrebbe essere abbastanza semplice emulare la funzionalità di some()
in Java utilizzando un ciclo e un'interfaccia per la funzionalità di callback.
È possibile utilizzare CollectionUtils
da Apache commons-collections:
List<Integer> primes = Arrays.asList(3, 5, 7, 11, 13)
CollectionUtils.exists(primes, even); //false
Dove even
è un predicato:
Predicate even = new Predicate() {
public boolean evaluate(Object object) {
return ((Integer)object) % 2 == 0;
}
}
o in una versione inline:
List<Integer> primes = Arrays.asList(2, 3, 5, 7, 11, 13)
CollectionUtils.exists(primes, new Predicate() {
public boolean evaluate(Object object) {
return ((Integer)object) % 2 == 0;
}
});
Sì, è è brutto per due ragioni:
- Java non supporta (ancora) funzioni come cittadini di prima classe, che sono emulati con l'interfaccia Metodo singolo-astratto.
commons-collections
non supporta i generici.
D'altro canto in lingue moderne JVM come Scala si può scrivere:
List(3,5,7,11,13,17).exists(_ % 2 == 0)
Un'altra libreria di terze parti per supportare questo metodo è Google Guava, ha [ 'Iterables.any () '] (http://guava-libraries.googlecode.com/svn/tags/release08/javadoc/com/google/common/collect/Iterables.html). – axtavt
E Guava supporta i generici. ;) –
Java 8 avrà lambda. Inoltre, le classi SAM ora sono chiamate interfacce funzionali. –
- 1. Java equivalente di JavaScript String.match()
- 2. jQuery equivalente del metodo addEventListener di JavaScript
- 3. Java equivalente al file di soluzione VS
- 4. Java equivalente al preg_replace_callback di PHP
- 5. PHP equivalente al metodo C# string.IsNullOrEmpty?
- 6. Python equivalente al metodo Ruby Array.each
- 7. Java ha un equivalente di riferimento const?
- 8. java equivalente di swfobject
- 9. google go equivalente del metodo java finalize
- 10. Il metodo di caricamento jquery fornisce una funzionalità jax equivalente al metodo replace_html di Rails?
- 11. Esiste un equivalente del metodo Java equals in C++?
- 12. Java equivalente di OpenLayers
- 13. Equivalente al metodo Seq.scan() di F # in Python?
- 14. Python equivalente al metodo magico __call() di PHP?
- 15. Metodo di classe in Ruby (equivalente statico in JAVA)
- 16. Esiste un metodo equivalente LINQ?
- 17. Ruby equivalente al codecomponent di encodeURIC di JavaScript che produce un output identico?
- 18. Equivalente Java di C# system.beep?
- 19. Java: invio di più parametri al metodo
- 20. Equivalente ad Array. Alcuni in ruby / rails
- 21. Esiste un equivalente JavaScript per C# 'params'?
- 22. Equivalente Java per .charCodeAt()
- 23. Java equivalente al tipo di classe dinamica C#?
- 24. Equivalente Java di Python repr()?
- 25. jQuery equivalente del metodo .send() di Ruby
- 26. Equivalente Java di Reflection.Emit
- 27. Java ha un equivalente StringStream?
- 28. Sovrascrittura di un metodo Java
- 29. . Equivalente a Java AssertionError Java
- 30. Esiste un equivalente in Javascript/Coffeescript/jQuery nell'invio di Ruby?
+1 La mancanza di generici è un grosso svantaggio delle collezioni di beni comuni. –
@ Anony-Mousse Sì; è un dolore, anche se lo uso ancora:/ –
Questo è grandioso, grazie! – Zugwalt