Przejdź do głównej zawartości

Posty

StringBuilder vs Stringbuffer

StringBuilder naleyży używać jesli zamierzamy concat wiele stringów, StringBuilder został wprowadzony od Javy5.  StringBuffer to starsza wersja StringBuildera. StringBuffer trobi to samo jednak z punktu widzenia performance jest wolniejszy gdzyż jest thread safe Thread Safety in Java  Thread safety in java is the process to make our program safe to use in multithreaded environment, there are different ways through which we can make our program thread safe.  Synchronization is the easiest and most widely used tool for thread safety in java.  Use of Atomic Wrapper classes from java.util.concurrent.atomic package. For example AtomicInteger  Use of locks from java.util.concurrent.locks package.  Using thread safe collection classes, check this post for usage of ConcurrentHashMap for thread safety.  Using volatile keyword with variables to make every thread read the data from memory, not read from thread cache. Język Java również posiada słow...

String Pool Java Core

Co to jest String Pool? W profesjonalnej aplikacji az do 40% pamięci zajmują obiekty typu String. Dlatego w Javie mozliwe jest stworzenie specjalnej przestrzeni w pamieci do trzymania wszystkich unikalnych obiektów String które mogą być używane wieloktornie co zaoszczedza zasobów. Strin Pool a inaczej nazywane Intern Pool to miejsce w JVM któe zbiera stringi. Obikety nie literalne trafiają do GC.

Hermetyzacja raz jeszcze - java + static

Korzyści z hermetyzacji : możliwość zmianny tylko w obrębie klasy np z getName ---> return firstName + " " + lastName zamiast pierwotnego return name ograniczamy dostępność tylko do wyznaczonych parti kodu - ustawiamy dla pola private ale nie ustawiamy gettera do tego pola łatwosć w testowaniu  łatwiejsze ponowne używanie programu Modifikator static: powoduje ze nie potrzeba tworzyć obiektu klasy aby mieć dostęp do jego metod. Java przeszukuje wszystkie modyfikatory dostępu static aby dla wszystkich metod stworzyć po jednej instancji metody Zmienne będące w statycznej metodzie muszą również być statyczne aby umozliwić uruchomienie metody / programu W statycznej metodzie nie stosujemy this. gdyż nie odwołujemy się do instancji która może zostać nie zainicjalizowana Statyczna zmienna nie może być zainicjalizowana w metodzie statycznej gdyż dochodzi do problemu w którym moemncie zainicjalizować zmienną A - w moemencie startu programu B - w momencie wywoła...

Java Collection - Kolekcje w Java

Podział kolekcji w Java-ie: Implementowane są interfejsy kolor zielony w klasach kolor fiolet Kolekcje mogą być generyczne i niegeneryczne generyczne - zdefiniowany typ jaki będą przechowywać niegeneryczne - przechowują wszystko co do nich wpadnie co w nich umieścimy ArrayList : wolniejsze w manipulacji elementy sa obok siebie wolne dodawanie elementów LinkedList : szybkie umieszczanie obiektów wolniejsze odczytywanie szukanie Linkedlist – dodawanie elementów tam gdzie jest miejsce w pamięci i jednoczesne dodawanie referencji gdzie ten element się znajduje, to jest plus w kontekście ArrayList która musi przenieść cały ArrayList jeśli braknie miejsca. LinkedList pamięta referencje do lokowanych obiektów. Obiekt w LinkedList jest jakby opakowywany tj zawiera informacje nie tylko o sobie ale również posiada referencje do poprzednika i następnika.  Obiekt w LinkedList zawiera:  Obiekt sam w sobie  Ref do następnika  Ref do poprze...

Array-1 > middleWay

Given 2 int arrays, a and b, each length 3, return a new array length 2 containing their middle elements. middleWay([1, 2, 3], [4, 5, 6]) → [2, 5] middleWay([7, 7, 7], [3, 8, 0]) → [7, 8] middleWay([5, 2, 9], [1, 4, 5]) → [2, 4] Proste rozwiązanie - nie bierze pod uwagę iż szeregi mogą mieć różna długość public int sum2 ( int [] nums ) { if ( nums . length >= 2 ) return ( nums [ 0 ] + nums [ 1 ]); if ( nums . length == 1 ) return nums [ 0 ]; return 0 ; } Rozwiązanie umożliwiające podjęcie środkowego indeksu bez względu na różnice długości poszczególnych arrayów public int [] middleWay ( int [] a , int [] b ) { int [] newNums = new int [ 2 ]; newNums [ 0 ]= a [ 0 +( a . length - 0 )/ 2 ]; newNums [ 1 ]= b [ 0 +( b . length - 0 )/ 2 ]; return newNums ; }

String-2 > repeatFront

Given a string and an int n, return a string made of the first n characters of the string, followed by the first n-1 characters of the string, and so on. You may assume that n is between 0 and the length of the string, inclusive (i.e. n >= 0 and n <= str.length()). repeatFront("Chocolate", 4) → "ChocChoChC" repeatFront("Chocolate", 3) → "ChoChC" repeatFront("Ice Cream", 2) → "IcI" Definiujemy zmienna newStr , loop reverse schodzimy od n do 0 i kazdy substring dodajemy do nwoego newStr public String repeatFront ( String str , int n ) { String newStr = "" ; for ( int i = n ; i >= 0 ; i --){ newStr += str . substring ( 0 , i ); } return newStr ; }

String-2 > mixString

Given two strings, a and b, create a bigger string made of the first char of a, the first char of b, the second char of a, the second char of b, and so on. Any leftover chars go at the end of the result. mixString("abc", "xyz") → "axbycz" mixString("Hi", "There") → "HTihere" mixString("xxxx", "There") → "xTxhxexre" Mix String: dwa stringi o roznej dlugosci Musimy przejsc loopem przez oba i zlozyc nowy string . aby miec pewnosc ze iterujemy po wszystkich char w stringu wybieramy dluzszy. Konieczne zadeklarowanie zmiennej String str ktora bedzie przechowywala kolejne char public String mixString ( String a , String b ){ String str = "" ; int len = 0 ; if ( a . length () >= b . length ()) { len = a . length (); } else len = b . length (); for ( int i = 0 ; i < len ; i ++) { if ( i...