Java - Sortowanie alfabetycznie wg polskich liter



import java.util.*;
import java.io.*;
import java.text.*;

public class sort {
  public static void main(String args[]) {

    String slowa[] = { "Słowa", "żłobek", "żółw", "Żółć",
    "Sznurek", "żar", "Świstak", "samochód", "Pies", "sąd"};

    Locale.setDefault(new Locale("pl","PL"));

    PrintWriter ekran=null;
    try {
      ekran=new PrintWriter(new OutputStreamWriter(System.out,"CP852"),true);
    } catch(UnsupportedEncodingException e) {
      System.out.println("Nie można zainicjować strony kodowej CP852");
      ekran=new PrintWriter(new OutputStreamWriter(System.out),true);
    }

    ekran.println("Tradycyjnie:");
    Arrays.sort(slowa);
    for (int i=0; i < slowa.length; i++) {
      ekran.println(slowa[i] + " ");
    }

    ekran.println("\nPoprawnie:");
    Arrays.sort(slowa, Collator.getInstance());
    for (int i=0; i < slowa.length; i++) {
      ekran.println(slowa[i] + " ");
    }

  }

}


W tablicy slowa[] umieśćmy sobie kilka wyrazów zawierających polskie znaki. Będziemy je sortować. Od razu możemy ustawić sobie odpowiedni język, w którym odbędzie się sortowanie. Odpowiada za to obiekt Locale, dla którego tworzymy język polski: "pl" i "PL" zgodnie ze standardami.

Dalej inicjowany jest "polski" ekran, aby pojawiły się na nim napisy w naszym języku, a nie krzaczki - sposób opisany jest w oddzielnej poradzie, więc nie ma sensu się nad nim rozwodzić.

Aby posortować tablicę z wyrazami korzystamy z metody sort(). Pierwsze wywołanie tej metody posortuje nam znaki, ale nie będą one poprawnie posortowane:


Dzieje się tak, ponieważ program nie wie według reguł jakiego języka ma sortować wyrazy (traktuje je jako wyrazy angielskie) i gubi się tam, gdzie występują znaki polskie.

Na szczęście w metodzie sort() można określić w drugim parametrze sposób sortowania. Wywołanie metody Collator.getInstance() spowoduje pobranie ustawień lokalnych (dlatego ustawiliśmy wcześniej Locale dla języka polskiego). I teraz sortowanie odbędzie się zgodnie z naszą gramatyką:
W ten sposób można zdefiniować sortowanie według dowolnego języka. Ponieważ w Javie można skorzystać ze stałych dla kilku języków (ale nie dla polskiego), zamiast deklarować Locale można wprost w metodzie sortującej podać język. Dla języka francuskiego byłoby to:

Arrays.sort(slowa, Collator.getInstance(Locale.FRENCH));

UPDATE from SELECT w jednym zapytaniu

wersja draft


UPDATE
    Table_A
SET
    Table_A.col1 = Table_B.col1,
    Table_A.col2 = Table_B.col2
FROM
    Some_Table AS Table_A
    INNER JOIN Other_Table AS Table_B
        ON Table_A.id = Table_B.id
WHERE
    Table_A.col3 = 'cool'


SQL Insert into … values ( SELECT … FROM … )
How to perform an IF…THEN in an SQL SELECT?
Add a column with a default value to an existing table in SQL Server
How to return the date part only from a SQL Server datetime datatype
SQL update from one Table to another based on a ID match
Inserting multiple rows in a single SQL query?
SQL update query using joins
How can I do an UPDATE statement with JOIN in SQL?
Update a table using JOIN in SQL Server?
Update a column from multiple columns in SQL Server
Hot Network Questions

Jak umieścić na stronie film z youtube z opcją auto play?

Wystarczy, że na końcu adresu do filmiku dodamy ?autoplay=1
iframe src="https://www.youtube.com/embed/Nz8NntQt_7Q?autoplay=1" width="520" height="345"


Działanie kodu mozna zbadać i edytować online tutaj

https://jsfiddle.net/2jzehnwf/

Zarabianie na reklamach



Tym razem zaprezentuję statystyki dotyczące zarobków wypłacanych za kliknięcia w reklamy, które wyświetlane są moim blogu.
Jak łatwo zauważyć prawie wszystkie kliknięcia wykonane były na urządzeniach typu komputery PC i laptopy.
Jest to ciekawe z racji, że rynek PC podobno wymiera. Producenci sprzętu od dawna prześcigają się w urządzeniach mobilnych wycofując się z rynku tradycyjnych komputerów.
Zjawisko to również jest bardzo widoczne po tytułach na pierwszych stronach gazet związanych z branżą IT.
Tymczasem okazuje się, że ludzie wciąż najchętniej korzystają z dużych ekranów.
Dodam tylko, że prezentowana statystyka dotyczy kilku moich blogów - również takich, gdzie treść jest mniej angażująca (filmy, muzyka) i bardziej przyjemna / nadająca się do przeglądania na np. tabletach.

Bazy danych typu NoSQL

CouchDB Apache Cassandra Apache HBase Apache Accumulo Apache Phoenix ArangoDB

Najlepsze biblioteki java script

AngularJS
EmberJS
Backbonejs
Dojo
Gruntjs

MeekroDB biblioteka do zapytań SQL w PHP

www.meekro.com Classic Select Standard PHP forces you to remember to escape every variable. Don't drop any quotes or forget any escapes, or you're in trouble!
$mysqli->query("SELECT * FROM login WHERE username='"
  . $mysqli->real_escape_string($username) . "' AND password='"
  . $mysqli->real_escape_string($password) . "'");
MeekroDB takes care of quotes and escaping for you.
DB::query("SELECT * FROM login WHERE username=%s AND password=%s", $username, $password);
Large Update or Insert Standard PHP forces you to count the column names yourself to make sure everything goes into the right field. Don't forget to escape all strings, too, if you don't want to get hacked!
$mysqli->query("INSERT INTO mytable (`name`, `rank`, `location`, `age`, `intelligence`) 
  VALUES ('" . $mysqli->real_escape_string($name) . "','"
  . $mysqli->real_escape_string($rank) . "','"
  . $mysqli->real_escape_string($location) . "',"
  . intval($age) . ",'"
  . $mysqli->real_escape_string($intelligence) . "')");
MeekroDB lets you INSERT with a very simple format. You can tell at a glance if everything is right.
DB::insert('mytable', array(
  'name' => $name,
  'rank' => $rank,
  'location' => $location,
  'age' => $age,
  'intelligence' => $intelligence
));
Grab One Row or Field Standard PHP makes it a pain to grab the contents of a single MySQL field.
$result = $mysqli->query("SELECT COUNT(*) FROM accounts");
$row = $result->fetch_assoc();
$number_accounts = $row['COUNT(*)'];
MeekroDB makes it trivial.
$number_accounts = DB::queryFirstField("SELECT COUNT(*) FROM accounts");
If you want to grab a row, that's trivial too.
$account = DB::queryFirstRow("SELECT * FROM accounts WHERE username=%s", 'Joe');