Was ist das Java-Äquivalent für LINQ?
Antworten
Zu viele Anzeigen?Es gibt nichts Vergleichbares zu LINQ für Java.
...
Modifier
Mit Java 8 werden wir nun mit der Stream-API Das ist eine ähnliche Sache, wenn es um Sammlungen geht, aber es ist nicht ganz dasselbe wie Linq.
- Wenn Sie ein ORM suchen, wie Entity Framework, dann können Sie versuchen Winterschlaf
-)
Es gibt eine alternative Lösung, Coollection .
Coolection hat nicht so getan, als wäre es das neue Lambda, aber wir sind von alten Java-Projekten umgeben, bei denen diese Lib helfen wird. Sie ist wirklich einfach zu benutzen und zu erweitern und deckt nur die am häufigsten benutzten Aktionen der Iteration über Sammlungen ab, wie das:
from(people).where("name", eq("Arthur")).first();
from(people).where("age", lessThan(20)).all();
from(people).where("name", not(contains("Francine"))).all();
Lambdas sind jetzt verfügbar innerhalb von Java 8 in Form von JSR-335 - Lambda-Ausdrücke für die Programmiersprache JavaTM
UPDATE : JDK8 ist jetzt freigegeben worden das Projekt Lambda enthält. Es lohnt sich, eine Kopie von Java 8 in Aktion derzeit noch MEAP.
Lesen Sie den Artikel Brian Goetz Artikel über Lambdas, um zu verstehen, wie Lambdas in JDK8 implementiert sind, und um ein Verständnis für Streams, interne Iteration, Kurzschlüsse und Konstruktorreferenzen zu erlangen. Sehen Sie sich auch die obigen JSRs an, um weitere Beispiele zu erhalten.
Ich habe einen Blog über einige der Vorteile der Verwendung von Lambdas in JDK8 geschrieben. Die Macht des Pfeils auch NetBeans 8 bietet großartige Unterstützung für die Konvertierung von Konstrukten in JDK8, über die ich auch schon gebloggt habe Umstellung auf JDK 8 mit NetBeans .
Mit der Bibliothek lambdaj können Sie die Elemente einer Sammlung (und vieles mehr) in einer besser lesbaren Form auswählen
https://code.google.com/archive/p/lambdaj/
Sie hat einige Vorteile gegenüber der Quaere-Bibliothek, da sie keine magische Zeichenkette verwendet, vollständig typsicher ist und meiner Meinung nach eine besser lesbare DSL bietet.
Sie werden keine Entsprechung von LINQ finden, es sei denn, Sie verwenden die javacc um Ihr eigenes Äquivalent zu erstellen.
Bis zu dem Tag, an dem jemand eine praktikable Lösung dafür findet, gibt es einige gute Alternativen, z. B.
- See previous answers
- Weitere Antworten anzeigen