Commit a4945cda by Patryk Czarnik

Sortowanie i stream

parent ec1add1f
package alx.czysta_java.p05_kolekcje;
public class IntegerToNieInt {
public static void main(String[] args) {
long poczatek = System.nanoTime();
long suma = 0L;
for(int i = 0; i < 1_000_000_000; i++) {
suma += i;
}
long koniec = System.nanoTime();
System.out.println(suma);
System.out.println((koniec - poczatek) / 1000);
// int long - czas 304602
// Integer Long - czas 6437486
}
}
package alx.czysta_java.p05_kolekcje;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
public class PierwszeKolekcje {
public static void main(String[] args) {
String[] tablica1 = new String[5];
System.out.println(tablica1.length);
System.out.println(tablica1);
System.out.println(Arrays.toString(tablica1));
tablica1[0] = "Warszawa";
tablica1[1] = "Kraków";
tablica1[2] = "Wrocław";
System.out.println(Arrays.toString(tablica1));
// final nie jest potrzebne, a pokazuję tylko, że jego użycie nie zapobiega modyfikacji zawartości tablicy
final String[] tablica2 = {"Londyn", "Paryż", "Berlin"};
System.out.println(Arrays.toString(tablica2));
tablica2[0] = "Lądek";
System.out.println(Arrays.toString(tablica2));
List<String> lista = new ArrayList<>();
System.out.println(lista);
lista.add("Ala");
lista.add("Basia");
lista.add("Celina");
lista.add("Basia");
System.out.println(lista);
System.out.println(lista.get(1)); // ta operacja działa szybko dla ArrayList, ale wolno dla LinkedList
// iteracja za pomocą pętli for
for (String imie : lista) {
System.out.println("Witaj " + imie);
}
System.out.println();
// Set - nie zawiera powtórzeń
// - HashSet - zmienia kolejność, ale działa najszybciej
// - TreeSet - sortuje rosnąco
Set<String> set1 = new HashSet<>(lista);
System.out.println("set: " + set1);
Set<String> set2 = new TreeSet<>();
set2.addAll(lista);
set2.add("Ącki");
System.out.println("set: " + set2);
System.out.println();
// słownik
Map<String, Integer> mapa = new HashMap<>();
mapa.put("Ala", 30);
mapa.put("Ela", 40);
mapa.put("Ola", 50);
System.out.println(mapa);
mapa.put("Ala", 31);
System.out.println(mapa);
// odczyt elementu spod określonego klucza
Integer wiekAli = mapa.get("Ala");
System.out.println(wiekAli);
// gdy dla danego klucza nie ma wartości - wynikiem jest null
// właśnie dlatego trzeba tu użyć typu Integer a nie int
Integer wiekKasi = mapa.get("Kasia");
System.out.println(wiekKasi);
}
}
package alx.czysta_java.p05_kolekcje;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
public class SortowanieAlfabetyczne {
public static void main(String[] args) {
List<String> lista = new ArrayList<>(List.of("Łukasz", "Agnieszka", "Zenon", "Ala", "Ali", "Ćma", "Lara", "Marek", "Mikołaj"));
System.out.println(lista);
// sortowanie domyślne
lista.sort(null); // równoważne: Collections.sort(lista)
System.out.println(lista);
// sortowanie alfabetyczne:
lista.sort(Collator.getInstance()); // zgodnie z ustawieniami językowymi systemu
System.out.println(lista);
lista.sort(Collator.getInstance(new Locale("pl", "PL")));
System.out.println(lista);
lista.sort(Collator.getInstance(new Locale("fr", "FR")));
System.out.println(lista);
// przykład definiowania "Comparatora" za pomocą wyrażenia lambda
lista.sort((e1, e2) -> e1.length() - e2.length());
System.out.println(lista);
// chociaż tak naprawdę mogę skorzystać z comparingInt
lista.sort(Comparator.comparingInt(String::length));
System.out.println(lista);
}
}
package alx.czysta_java.p06_streamy;
import java.text.Collator;
import java.util.List;
public class FilterMap {
public static void main(String[] args) {
// kolekcje tworzone za pomocą .of (od Java 9) są niemodyfikowalne - operacje add, remove, sort kończą się błędem
List<String> lista = List.of("Bartek", "Łukasz", "Zenon", "Ala", "Tadeusz", "Ola", "Dorota", "Ala", "Marek");
System.out.println(lista);
lista.stream()
.filter(s -> s.length() > 3)
.map(s -> s.toLowerCase())
.forEach(s -> System.out.println(s));
System.out.println();
lista.stream()
.filter(s -> s.length() > 3)
.map(String::toUpperCase)
.sorted(Collator.getInstance())
.forEachOrdered(System.out::println);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment