SummaryStatistics dla streamów. { weekly #4 }

Dziś krótki wpis między innymi o tym co daje stosowanie mapowanie typu mapToInt (oraz Long, Double) zamiast zwykłego mapowania. Jednym z powodów zastosowania strumienia jest chęć uzyskania prostego wyniku działania dla elementów danej kolekcji. Wyobraźmy sobie, że chcemy uzyskać np. średnią wieku osób, które przechowujemy w zbiorze. Jak podejść do takiego zadania? Używając metody map() możemy jedynie uzyskać wynik count(), min() czy max(). […]

Metoda z parametrem zadeklarowanym jako final { weekly #3 }

Słówko final. To temat częstych pytań podczas rozmów rekrutacyjnych na juniorskie stanowiska. Temat wydaje się dość prosty, ale czasem ogranicza się do omówienia finalnych klas, metod i zmiennych. Ale przecież finalny może być jeszcze parametr metody. I tu sprawa też jest bardzo prosta. Bo słowo kluczowe final oznacza to czego można się spodziewać. Czyli finalny parametr nie może zostać nadpisany, podobnie jak finalna zmienna […]

Spring od podstaw. Czyli co to w ogóle jest? { weekly#2 }

Jeżeli uczycie się programować w Javie np. na jakimś bootcampie czy kursie online, to w pewnym momencie traficie na temat Springa. Pamiętam, że sam na swoim bootcampie miałem zajęcia ze Springa dopiero po siedmiu miesiącach, praktycznie na sam koniec całego kursu. I uważam, że była to odpowiednia kolejność. Poznawanie Springa, bez praktyczniej znajomości Javy to trochę droga na skróty. Dzisiaj, mimo, że od ukończenia bootcampa minęło 2,5 roku, wciąż poszerzam wiedzę ze Springa. Robię to głównie dlatego, […]

Używanie „this” w Javie i JavaScript. Czyli niby to samo, ale jednak coś innego. { weekly#1 }

Prowadzenie bloga to jednak nie taka prosta rzecz. Przy nadmiarze obowiązków, pracy i ciągłej nauce znalezienie czasu na pisanie kolejnych notek nie jest takie łatwe. Bo przecież trzeba jeszcze korzystać z życia. Postanowiłem więc publikować raczej krótkie wpisy, skupione na konkretnych problemach. Takich, z którymi sam się mierze w swojej pracy czy nauce. I mam nadzieję, że uda mi się takie notki publikować co tydzień. Na początku poruszę temat […]

Grupowanie kolekcji w streamach

Streamy to zdecydowanie jedno z moich ulubionych rozwiązań w Javie. Parafrazując wieszcza – streamy się docenia, gdy się je straci. Gdy zacząłem programować w Apexie, od samego początku odczułem brak tego co strumienie oferują. Jedną z często używanych przeze ze mnie funkcji jest grupowanie, czyli metoda groupingBy z Collectors w pakiecie java.util.stream. Służy ona do tworzenia map z list czy zbiorów. Wracając do wspomnianego Apexa, chcąc z listy Tasków stworzyć mapę, z kluczem […]

Porównanie kolekcji w Pythonie i Javie. Czyli po co nam słownik w programowaniu?

Jeżeli tak jak ja zaczęliście swoją przygodę z programowaniem od Javy, a potem poznawaliście inne języki, pewnie zwróciliście uwagę na różnicę w kolekcjach (czyli strukturach danych) pomiędzy językami. Może zauważyliście różnice w nazewnictwie, albo w składni, a z czasem skojarzyliście które metody są swoimi odpowiednikami. Postanowiłem wziąć na tapet kolekcje z dwóch popularnych języków – Pythona i Javy – i zrobić małe podsumowanie wiedzy. Lista, królowa kolekcji! Lista w Pythonie, podobnie […]

Operator warunkowy w Javie

Pamiętam, że gdy pierwszy raz zobaczyłem składnię operatora warunkowego nie za bardzo wiedziałem o co w tym chodzi. Było to jednak na samym początku nauki programowania i dość szybko zrozumiałem jego wagę w pisaniu czytelnego kodu. Dziś jest to chyba najczęściej stosowane przeze mnie uproszczenie składni w Javie. Jedna linia zamiast kilku. O co chodzi w operatorze warunkowym? Jest to po prostu zamienienie instrukcji warunkowej if-else do postaci trójargumentowego operatora: booleanValue ? […]

TDD, BDD, DDD… o co w tych skrótach chodzi?

Pamiętam jak ucząc się programowania usłyszałem o TDD, czyli Test-Driven Development. Wydawało mi się to bardzo ciekawym podejściem w programowaniu. Parę miesięcy później usłyszałem pytanie o TDD na rozmowie kwalifikacyjnej i zadowolony szybko na nie odpowiedziałem. Tylko potem padło pytanie o BDD, o którym nie wiedziałem nic. Później jeszcze dowiedziałem się, że jest DDD, FDD i pewnie z czasem dojdzie jeszcze kilka kolejnych XDD. Co więc znaczą te wszystkie skróty i czym się […]

Sortowane kolekcje w Javie

W Javie mamy do dyspozycji całkiem sporo różnych implementacji kolekcji, których można użyć w zależności od potrzeb. Mamy też oczywiście kolekcje, które zachowują określony porządek, są to TreeSet i TreeMap. Obie kolekcje implementują odpowiednio interfejsy NavigableSet i NavigableMap, które to z kolei rozszerzają interfejsy SortedSet i SortedMap. Jak już pewnie wiecie, małe przypomnienie – zbiory implementują interfejs Collection, natomiast mapy już nie. Przekłada się to m.in. na różne metody […]

Prosty sposób na uniknięcie NullPointerException

Chyba jednym z bardziej frustrujących błędów jakie zostają nam rzucone jest NullPointerException. Za każdym razem gdy NPE się pojawia, zastanawiam się jakim cudem dany obiekt mógł być nullem. Zwłaszcza, gdy coś jest tak oczywista jak String name w klasie Person. Niestety często chcąc dokonać szybkich zmian odpuszczamy przeanalizowanie wszystkich możliwych przypadków i potem otrzymujemy niemiłą niespodziankę. Pokażę wam jeden prosty sposób jak […]

Przewiń do góry