JavaRush /Java-Blog /Random-DE /Kaffeepause Nr. 73. So verbessern Sie Ihren Java-Code mit...

Kaffeepause Nr. 73. So verbessern Sie Ihren Java-Code mit Streams. Die fünf besten IntelliJ IDEA-Plugins für Java-Entwickler

Veröffentlicht in der Gruppe Random-DE

So verbessern Sie Ihren Java-Code mit Streams

Quelle: Dev.toKaffeepause Nr. 73.  Verbessern Sie Ihren Java-Code mit Streams.  Die fünf besten IntelliJ IDEA-Plugins für Java-Entwickler – 1

Was sind Streams?

Streams tauchten erstmals in Java 8 auf. Laut Oracle-Dokumentation handelt es sich dabei um Klassen zur Unterstützung funktionaler Operationen an Element-Streams, beispielsweise Map-Reduce-Transformationen für Sammlungen. Vereinfacht ausgedrückt besteht ein Stream aus einer Datenquelle, gefolgt von null oder mehr Zwischenoperationen und dann einer Terminaloperation.

Was ist eine Datenquelle?

  • Sammlungen, Listen, Mengen, Ints, Longs, Doubles, Arrays, Dateizeilen.

Was sind Zwischenoperationen?

  • Filtern, zuordnen, sortieren usw.
  • Diese Vorgänge geben einen Stream zurück, sodass sie mit anderen Vorgängen verkettet werden können.

Was sind Terminaloperationen?

  • ForEach, sammeln, reduzieren, findFirst usw.
  • Sie geben ein ungültiges oder Nicht-Stream-Ergebnis zurück.
  • Wenn ein Thread keine Terminaloperation hat, werden keine Zwischenoperationen aufgerufen.

Lassen Sie uns mithilfe von Streams eine Funktion vom imperativen in den deklarativen Stil konvertieren

Imperative Funktion (keine Streams):

private int getResult_imperative(List<String> strings) {
    int result = 0;
    for (String string : strings){
        if(isDigit(string.charAt(0))) continue;
        if (string.contains("_")) continue;
        result += string.length();
    }
    return result;
}
Hier fällt uns auf, dass wir einige Dinge manuell erledigen müssen:
  • Deklarieren Sie eine Ergebnisvariable, um das Ergebnis zu verfolgen.
  • Schleife durch die Saiten.
  • Schreiben Sie zwei if- Anweisungen (die viel komplexer sein können als dieser Fall).
  • Addieren Sie jeweils die Länge zum Ergebnis.

Schauen wir uns den deklarativen Stil (Streams) an:

private int getResult_Declarative(List<String> strings){
    return strings.
            stream().
            filter(s -> !isDigit(s.charAt(0))).
            filter(s -> !s.contains("_")).
            mapToInt(String::length).
            sum();
}
Was ist also der Unterschied?
  • Wir erhalten ein Stream-Objekt, indem wir die Funktion stream() aufrufen .
  • (Zwischenvorgang) Wir verwenden die Filterfunktion zweimal – jedes Mal geben wir eine Bedingung an, die nur von den Elementen erfüllt werden muss, zu denen wir in der nächsten Phase wechseln möchten.
  • (Zwischenoperation) Wir ordnen jedes String- Objekt einem int zu , indem wir die Längenmethode aufrufen (unter Verwendung des Methodenreferenzstils).
  • (Terminaloperation) Summieren Sie alle vorherigen int- Werte .

Beobachtungen

Kam Ihnen der zweite Ansatz nicht einfacher vor? Wir haben angegeben , was wir wollten, nicht wie wir es tun wollten . Dies ist der Geist der deklarativen Programmierung und das Ziel der Stream-API in modernen Java-Anwendungen.

Die fünf besten IntelliJ IDEA-Plugins für Java-Entwickler

Quelle: GitHubKaffeepause Nr. 73.  Verbessern Sie Ihren Java-Code mit Streams.  Die fünf besten IntelliJ IDEA-Plugins für Java-Entwickler – 2 Plugins können in vielen Situationen bei der regelmäßigen Arbeit mit Code sehr nützlich sein. Sie sind in der Lage, die Kernfunktionalität zu erweitern, verschiedene Integrationen bereitzustellen und die Automatisierung vieler Aufgaben zu unterstützen. Hier sind meiner Meinung nach die besten Plugins:

SonarLint

Mit SonarLint können Sie Fehler und Schwachstellen beim Schreiben von Code beheben. Es hebt Codierungsprobleme in Echtzeit hervor und gibt dem Entwickler klare Anweisungen, wie diese behoben werden können, sodass Sie sie beheben können, bevor der Code festgeschrieben wird. Dieses Plugin ist notwendig, da es die Codierung erheblich verbessert.

Maven-Helfer

Ich hoffe, Sie verwenden Maven? Ich ja! Das Maven Helper-Plugin bietet:
  • eine einfache Möglichkeit, widersprüchliche Abhängigkeiten zu analysieren und zu beseitigen;
  • eine einfache Möglichkeit, direkte oder transitive Abhängigkeiten zu finden;
  • Schritte zum Ausführen/Debuggen von Maven-Zielen für das Modul, das die aktuelle Datei enthält, oder im Root-Modul;
  • Aktion zum Öffnen eines Terminals am aktuellen Pfad zum Maven-Modul;
  • Aktionen zum Ausführen/Debuggen der aktuellen Testdatei. Wenn das Maven-Surefire-Plugin so konfiguriert ist, dass ein Test übersprungen oder ausgeschlossen wird, wird das Ziel „Verifizieren“ verwendet. Auf GitHub sind verschiedene Konfigurationsstile zu finden .

CodeMetrics

Dieses Plugin verfügt über Tab-Indikatoren, die auf benutzerdefinierten Schwierigkeitsberechnungen für Java-Dateien basieren. Sie geben dem Entwickler Hinweise in Klassen und Methoden, sodass er leicht erkennen kann, was überprüft werden muss. Obwohl es sich hierbei nicht um eine Standardmetrik handelt, handelt es sich doch um eine gute Annäherung an die zyklomatische Komplexität . Sie können die Komplexitätsberechnung für ein Projekt auch anpassen, indem Sie die entsprechenden Konfigurationseinträge ändern.

String-Manipulation

Groß-/Kleinschreibung, Sortieren, Filtern, Zoomen, Spaltenausrichtung, Grepping, Escape, Kodierung und vieles mehr ...

JPA-Kumpel

JPA Buddy macht alles, was mit JPA zu tun hat, einfach und schnell. Es bietet Tools, die Sie bei der Arbeit mit Hibernate, Spring Data JPA, Liquibase und Flyway unterstützen. Hauptmerkmale von JPA Buddy:
  • JPA-Entitäten: Erstellen und bearbeiten Sie Entitäten, Entitätsattribute, Lebenszyklusrückrufe, Indizes und Einschränkungen. Unterstützung für JPA-Konverter und benutzerdefinierte Hibernate-Typen. Möglichkeit, Lombok-Anmerkungen für Entitäten zu verwenden.
  • Erstellen Sie korrekte Implementierungen der Methoden equal, hashCode und toString für JPA-Entitäten.
  • Quellcodeabsichten, Prüfungen und Schnellkorrekturen für JPA-Entitätsdeklarationen.
  • Zeigen Sie die Entitätsbeziehung grafisch im JPA-Strukturbereich unter dem Knoten „Persistente Einheiten“ an.
  • Automatische Generierung von Liquibase-Änderungsprotokollen und Flyway-Versionsmigrationen: Datenbank-zu-Datenbank-, Modell-zu-Datenbank-, Modell-zu-Snapshot-Vergleiche.
  • Visual Liquibase Changelog-Designer und Codierungsunterstützung: Erstellen und Bearbeiten von Elementen, Referenzieren von Tabellennamen, Spaltennamen, enthaltenen Dateien und mehr.
  • Aktionen: Erstellen Sie einen Snapshot von Liquibase, führen Sie die Befehle „Liquibase update“ und „Liquibase updateSQL“ aus.
  • Spring Data Repositories: Repositorys erstellen, Repository-Methoden erstellen, Methodeneigenschaften bearbeiten, eine Projektion basierend auf einer Entitätsklasse erstellen, eine JPQL-Abfrage extrahieren.
  • Kotlin: Alle visuellen Designer unterstützen die Codegenerierung für Kotlin-Objekte und -Repositorys vollständig.
Ich habe über die fünf besten Plugins gesprochen, aber ich habe noch eines ...

Zusätzliche Symbole

Dies ist eine Symbolsammlung, die Verknüpfungen zu Dateien wie Markdown, Yaml, Maven, Git und vielen mehr hinzufügt. Sie werden sich daran gewöhnen, da sie Ihnen helfen, Dateien leichter zu erkennen. Sie werden sie auf jeden Fall brauchen.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION