Ich habe Erfahrung in C# -Programmierung, aber ich muss etwas in Java-Projekt ändern, so ist meine Frage ist in JAVA ALLES ÄHNLICH LINQ IN C#? Ich muss Listen in Java abfragen.Linq wie für Java
Antwort
Es gibt nichts, das LINQ für Java ähnelt. Es tut uns leid. Durch googeln fand ich this project aber natürlich kann man nicht die gleiche Integration in die Sprache oder einen syntaktischen Zucker erwarten, den man in C# bekommen könnte.
Es hängt davon ab, was Sie genau tun möchten. C# 's Begriff der Lambda-Notation kann mit Hilfe von anonymen Klassen viel mehr imitiert werden. So könnten Sie eine Where
Methode erstellen, die eine Function<T, bool>
übernimmt, wobei Function<T1, TReturn>
eine Klasse ist, die über eine einzelne Methode verfügt (z. B. Execute
). Ich verstehe, dass Guava so etwas hat.
Die Idee wäre dann so etwas zu sagen:
Iterable<Ball> redBalls = Enumerable.Where(balls,
new Function<Ball, bool>() {
public bool Execute(Ball b) { return b.getColor() == Color.Red; }
});
Doch trotz all dieser Arbeit, könnte man genauso gut es sans Linq getan haben:
List<Ball> redBalls = new ArrayList<Ball>();
for(Ball ball in balls) {
if(ball.getColor() == Color.Red) {redBalls.add(ball);}
}
Leider ist es eine weit weine aus dem, was du tun kannst, wenn du Lambda-Ausdrücke, abgeleitete Typen, Eigenschaften und Erweiterungsmethoden kombinierst, so wie C#.
var redBalls = balls.Where(b => b.Color == Color.Red);
-Code wie dies nur möglich sein, wenn Java Lambda-Ausdrücke implementiert, die für die Version 7 geplant war, wurde aber zurück auf die „nächste Version“ geschoben. Und Dinge wie LINQ to SQL oder LINQ to Entities sind nur möglich, wenn sie Expression-Bäume bekommen, von denen ich glaube, dass sie nicht einmal in der Roadmap enthalten sind. obwohl
bearbeiten
Manche Menschen mit komplexen Bibliotheken kommen haben dieses Verhalten zu simulieren. Viele verwenden "magische Zeichenfolgen", um die Teile der Abfragen auszuführen, für die sie keine vom Compiler überprüften Werte bereitstellen können. LambdaJ Proxy-Objekte verwendet der Compiler denken, dass Sie mit einem Ihrer Objekte arbeiten, die Sie Getter und Setter-Methoden mit der Kompilierung überprüft aufrufen können, so etwas wie folgt aussehen:
List<Person> redBalls = filter(having(
on(Ball.class).getColor(), equalTo(Color.RED)),
balls);
Diese sehr klug sind, aber niemand kann wirklich die Einfachheit von LINQ zu diesem Zeitpunkt erreichen.
- 1. Gibt es ein Java-Äquivalent für LINQ?
- 2. Quaere - Wer benutzt es schon? (LINQ to Objects für Java)
- 3. Benutzerdefinierter Filter für linq
- 4. Linq für verschachtelte Schleife
- 5. Abfrage Erweiterung für LINQ
- 6. Wie Transformationen für Zeichenfolgen in LINQ durchführen?
- 7. Wie Zeitüberschreitung für NHibernate LINQ-Anweisung festlegen
- 8. Wie schreibe ich LINQ-Anweisung für XmlAttributeCollection?
- 9. LINQ für diffing Sätze
- 10. LINQ-Optimierungen für IOrderedEnumerable
- 11. LINQ für kumulative Datensätze
- 12. Verwenden LINQ für beliebige
- 13. Java Stream-Äquivalent von LINQ SelectMany()
- 14. Dynamische LINQ für eine Sammlung?
- 15. Linq dynamische Argumente für IQueryable.Where()
- 16. LINQ Leistung für große Sammlungen
- 17. LINQ: Punktnotation Äquivalent für JOIN
- 18. LINQ Ausdruck für Klettern Objekthierarchie?
- 19. LINQ-Abfrage für ein Forum
- 20. Eigenschaftsnamen für die LINQ-Codegenerierung
- 21. LINQ COUNT für mehrere Spalten
- 22. LINQ Lösung für mehr Behebt
- 23. Linq zu XML für KML?
- 24. LINQ to SQL für Oracle.ODP
- 25. Linq-Abfrage für Duplikat Prüfwerte
- 26. Linq für SQL ersetzt% durch ~%
- 27. Linq-Abfrage für die Datenaggregation
- 28. Wie ermittelt Linq Wertänderungen?
- 29. LINQ-Modellierungsspaltenname wie Tabellenname
- 30. Wie in Linq Abfrage
nicht wirklich gleich ... die Frage "LINQ for Java tool" ist mehr von Marktforschung. – CrazyDart
Verwenden Sie die LAMBDAJ-Bibliothek. – Zasz
Überprüfen Sie diese: github.com/nicholas22/jpropel-light, echtes Beispiel: new String [] {"James", "John", "John", "Eddie"} .where (startsWith ("j")). toList(). distinct(); –