JavaRush /Blog Java /Random-PL /Przerwa kawowa #73. Jak ulepszyć swój kod Java za pomocą ...

Przerwa kawowa #73. Jak ulepszyć swój kod Java za pomocą strumieni. Pięć najlepszych wtyczek IntelliJ IDEA dla programistów Java

Opublikowano w grupie Random-PL

Jak ulepszyć swój kod Java za pomocą strumieni

Źródło: Dev.toPrzerwa kawowa #73.  Ulepsz swój kod Java dzięki strumieniom.  Pięć najlepszych wtyczek IntelliJ IDEA dla programistów Java — 1

Czym są strumienie?

Strumienie pojawiły się po raz pierwszy w Javie 8. Według dokumentacji Oracle są to klasy obsługujące operacje w stylu funkcjonalnym na strumieniach elementów, takie jak transformacje zmniejszające mapę na kolekcjach. Mówiąc najprościej, strumień składa się ze źródła danych, po którym następuje zero lub więcej operacji pośrednich, a następnie operacja terminalowa.

Co to jest źródło danych?

  • Kolekcje, listy, zestawy, int, longi, double, tablice, linie plików.

Co to są operacje pośrednie?

  • Filtruj, mapuj, sortuj itp.
  • Te operacje zwracają Stream, dzięki czemu można je połączyć z innymi operacjami.

Co to są operacje terminalowe?

  • ForEach, zbieraj, zmniejszaj, findFirst itp.
  • Zwracają nieprawidłowy wynik lub wynik niebędący strumieniem.
  • Jeśli wątek nie ma operacji terminalowej, elementy pośrednie nie zostaną wywołane.

Przekształćmy funkcję ze stylu imperatywnego na deklaratywny za pomocą strumieni

Funkcja imperatywna (brak strumieni):

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;
}
Tutaj zauważamy, że musimy wykonać kilka rzeczy ręcznie:
  • Zadeklaruj zmienną wynikową, aby śledzić wynik.
  • Przejdź przez ciągi.
  • Napisz dwie instrukcje if (które mogą być znacznie bardziej złożone niż w tym przypadku).
  • Dodaj długość każdego z nich do wyniku.

Sprawdźmy styl deklaratywny (Strumienie):

private int getResult_Declarative(List<String> strings){
    return strings.
            stream().
            filter(s -> !isDigit(s.charAt(0))).
            filter(s -> !s.contains("_")).
            mapToInt(String::length).
            sum();
}
Jaka jest więc różnica?
  • Obiekt Stream uzyskujemy wywołując funkcję stream() .
  • (Operacja pośrednia) dwukrotnie korzystamy z funkcji filtru - za każdym razem określamy warunek, jaki muszą spełniać tylko te elementy, do których chcemy przejść w kolejnej fazie.
  • (Operacja pośrednia) mapujemy każdy obiekt String na int , wywołując metodę długości (używając stylu odniesienia do metody).
  • (Operacja terminalowa) sumuje wszystkie poprzednie wartości int .

Obserwacje

Czy drugie podejście nie wydawało się prostsze? Pokazaliśmy , czego chcieliśmy, a nie jak chcieliśmy to zrobić . Taki jest duch programowania deklaratywnego i cel Stream API we współczesnych aplikacjach Java.

Pięć najlepszych wtyczek IntelliJ IDEA dla programistów Java

Źródło: GitHubPrzerwa kawowa #73.  Ulepsz swój kod Java dzięki strumieniom.  Pięć najlepszych wtyczek IntelliJ IDEA dla programistów Java — 2 Wtyczki mogą być bardzo przydatne w wielu sytuacjach podczas regularnej pracy z kodem. Są w stanie rozszerzyć podstawową funkcjonalność, zapewnić różnorodne integracje i wspierać automatyzację wielu zadań. Oto najlepsze wtyczki moim zdaniem:

SonarLint

SonarLint pozwala naprawić błędy i luki podczas pisania kodu. Zwraca uwagę na problemy z kodowaniem w czasie rzeczywistym, dając programiście jasne instrukcje, jak je naprawić, dzięki czemu można je naprawić przed zatwierdzeniem kodu. Ta wtyczka jest konieczna, ponieważ znacznie poprawia kodowanie.

Pomocnik Mavena

Mam nadzieję, że używasz Mavena? Ja robię! Wtyczka Maven Helper zapewnia:
  • prosty sposób na analizę i eliminację sprzecznych zależności;
  • łatwy sposób na znalezienie zależności bezpośrednich lub przechodnich;
  • kroki, aby uruchomić/debugować cele maven dla modułu zawierającego bieżący plik lub w module głównym;
  • akcja otwierająca terminal na bieżącej ścieżce do modułu maven;
  • akcje mające na celu uruchomienie/debugowanie bieżącego pliku testowego. Jeśli wtyczka maven-surefire jest skonfigurowana do pomijania lub wykluczania testu, zastosowany zostanie cel „weryfikuj”. Różne style konfiguracji można znaleźć na GitHubie .

CodeMetrics

Ta wtyczka ma wskaźniki zakładek oparte na niestandardowych obliczeniach trudności dla plików Java. Dają programiście wskazówki dotyczące klas i metod, dzięki czemu może łatwo określić, co należy sprawdzić. Chociaż nie jest to standardowa metryka, jest to bliskie przybliżenie złożoności cyklicznej . Można także dostosować obliczenia złożoności projektu, zmieniając odpowiednie wpisy konfiguracji.

Manipulacja ciągiem

Przełączanie wielkości liter, sortowanie, filtrowanie, powiększanie, wyrównywanie kolumn, grepping, ucieczka, kodowanie i wiele więcej...

Kumpel JPA

JPA Buddy sprawia, że ​​wszystko, co jest związane z JPA, staje się łatwe i szybkie. Zapewnia narzędzia ułatwiające pracę z Hibernate, Spring Data JPA, Liquibase, Flyway. Kluczowe cechy JPA Buddy:
  • Jednostki JPA: Twórz i edytuj encje, atrybuty encji, wywołania zwrotne cyklu życia, indeksy i ograniczenia. Obsługa konwerterów JPA i niestandardowych typów Hibernacji. Możliwość korzystania z adnotacji Lombok dla encji.
  • Twórz poprawne implementacje metod równości, hashCode i toString dla jednostek JPA.
  • Zamierzenia, kontrole i szybkie poprawki kodu źródłowego dla deklaracji jednostek JPA.
  • Graficznie wyświetl relację między encjami w panelu struktury JPA pod węzłem jednostek trwałych.
  • Automatyczne generowanie dzienników zmian Liquibase i migracji wersji Flyway: porównania bazy danych z bazą danych, modelu z bazą danych, porównania modelu z migawką.
  • Projektant dziennika zmian Visual Liquibase i pomoc w kodowaniu: tworzenie i edytowanie elementów, odwoływanie się do nazw tabel, nazw kolumn, dołączonych plików i nie tylko.
  • Działania: utwórz migawkę Liquibase, wykonaj polecenia „Liquibase update” i „Liquibase updateSQL”.
  • Spring Data Repositories: Tworzenie repozytoriów, tworzenie metod repozytorium, edycja właściwości metod, tworzenie projekcji na podstawie klasy encji, wyodrębnianie zapytania JPQL.
  • Kotlin: Wszyscy projektanci wizualni w pełni obsługują generowanie kodu dla obiektów i repozytoriów Kotlin.
Mówiłem o pięciu najlepszych wtyczkach, ale mam jeszcze jedną...

Dodatkowe ikony

To kolekcja ikon, która dodaje skróty do plików takich jak Markdown, Yaml, Maven, Git i wiele innych. Przyzwyczaisz się do nich, ponieważ pomagają łatwo rozpoznawać pliki. Na pewno będziesz ich potrzebować.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION