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 […]

try, catch, finally… Obsługa wyjątków w Javie

Wyjątki są nierozłączną częścią programowania i choćbyśmy nie wiem jak się starali, to i tak nie uchronimy się przed ich pojawieniem. Jednak możemy odpowiednio zabezpieczyć się na wypadek wystąpienia wyjątku, czyli „wyłapać” wyjątek za pomocą bloków try, catch i finally. Wyobraźmy sobie program, który obsługuje dane obywateli. Obiekt Citizen ma między innymi pola z imieniem, nazwiskiem i adresem. Obiekt Address natomiast ma pole miasto (obiekt klasy City). Poniższy […]

Java. Pytania rekrutacyjne dla Juniora: Zarządzanie pamięcią w Javie. Czyli co to jest garbage collector?

Gdzie przechowywane są zmienne i obiekty w Javie? Chyba każdy kto czyta ten wpis musiał słyszeć określenie garbage collector. Wiedza o tym jak działa „śmieciarz” jest jedną z fundamentalnych przy pracy z Javą i często pojawia się na rozmowach rekrutacyjnych. Jednak zacznijmy od początku. W Javie za zarządzanie pamięcią odpowiada wirtualna maszyna, czyli JVM (ang. Java Virtual Machine). Wyręcza ona w tym zakresie programistę, który nie musi przejmować […]

Range w Javie. Czyli kilka słów o zakresie.

Programuję w Javie, ale poznaję też kolejne języki i często zastanawiam się nad tym co inny język oferuje, a czego Java nie ma. Jedną z takich rzeczy jest zapisywanie zakresu. W niektórych językach jest to bardzo proste i odgórnie określone. Na przykład w Kotlinie można użyć gotowych klas range dla typów porządkowanych np. IntRange czy CharRange. Przykład poniżej: Zapis 1..5 jak również 1.rangeTo(5) to różny zapis tego samego obiektu typu […]

Przydatne metody klasy Collections w Javie.

Znajomość kolekcji to już na etapie juniora jedna z bardziej przydatnych umiejętności. Nie chodzi tylko o pytania na rozmowach rekrutacyjnych, ale o przydatną w pracy biegłość w operowaniu na kolekcjach. Dlatego warto zapoznać się z klasą Collections w java.util, będącą częścią Java Collections Framework, która pozwala wykorzystać proste lecz przydatne funkcje. Kilka z nich omówię poniżej. frequency() – znajdź elementy powtarzające się podaną liczbę razy Metoda, która pozwala znaleźć elementy kolekcji powtarzające się […]

Rekordy (records) w Javie 15.

Java 15 wprowadza kilka ciekawych rozwiązań, nie tyle znanych już z innych języków, co po prostu przydatnych. Jednym z nich jest wprowadzenie rekordów, czyli swego rodzaju prostych klas bez konieczności pisania konstruktorów, getterów czy nadpisywania metod toString(), hashCode() i equals(). Rekordy w Javie Rekordy w Javie można porównać np. do znanego z Kotlina rozwiązania opartego o klasy do przechowywania danych, czyli data class. Czyli niemodyfikowalnej klasy bez konieczności implementowania właśnie […]

Przewiń do góry