Commit 4d1ccbf0 by Patryk Czarnik

sortowanie Tadeusza

parent f2a448c1
......@@ -7,3 +7,4 @@
liczby?.txt
wynik?.txt
/pan_tadeusz_num.txt
/pan_tadeusz_sort.txt
package p13_pliki.tadeusz;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
public class Posortuj1 {
public static void main(String[] args) {
try {
System.out.println("Czytanie pliku");
List<String> lines = Files.readAllLines(Path.of("pan_tadeusz.txt"));
System.out.println("Sortowanie");
// domyślnie napisy są sortowane zwn kody Unicode poszczególnych znaków
lines.sort(null);
System.out.println("Zapis pliku");
Files.write(Path.of("pan_tadeusz_sort.txt"), lines);
// dodatkowe opcje na końcu:
// Files.write(Path.of("pan_tadeusz_sort.txt"), lines, StandardOpenOption.APPEND);
System.out.println("Gotowe");
} catch (IOException e) {
e.printStackTrace();
}
}
}
package p13_pliki.tadeusz;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Iterator;
import java.util.List;
public class Posortuj2 {
public static void main(String[] args) {
try {
System.out.println("Czytanie pliku");
List<String> lines = Files.readAllLines(Path.of("pan_tadeusz.txt"));
System.out.println("Filtrowanie");
// Tutaj pokażę Wam zastosowanie iteratora do usunięnia wybranych elementów listy (od Java 8 można prościej - zob. następne wersje)
for(Iterator<String> it = lines.iterator(); it.hasNext();) {
String line = it.next();
if(line.isBlank()) {
it.remove();
}
}
System.out.println("Sortowanie");
// Tutaj posortujemy niestandardowo w oparciu o długość napisu
// Comparator to jest taka maszynka, która gdy dostanie dwa obiekty do porównania,
// to zwraca: wartość ujemną, jeśli lewy < prawy, wartość dodatnią, jeśli lewy > prawy, a 0 jeśli są równe
lines.sort((lewy, prawy) -> lewy.length() - prawy.length());
System.out.println("Zapis pliku");
Files.write(Path.of("pan_tadeusz_sort.txt"), lines);
System.out.println("Gotowe. Zapisano " + lines.size() + " linii");
} catch (IOException e) {
e.printStackTrace();
}
}
}
package p13_pliki.tadeusz;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.text.Collator;
import java.util.List;
import java.util.Locale;
public class Posortuj3 {
public static void main(String[] args) {
try {
System.out.println("Czytanie pliku");
List<String> lines = Files.readAllLines(Path.of("pan_tadeusz.txt"));
System.out.println("Filtrowanie");
// Tutaj usunięcie wcięć oraz pustych linii zrobimy operacjami, które pojawiły się w Java 8
lines.replaceAll(String::strip);
// lines.replaceAll(String::toUpperCase);
lines.removeIf(String::isBlank);
System.out.println("Sortowanie");
// Tutaj korzystamy z klasy Collator, która pozwala porównywać napisy zgodnie z alfabetem narodowym.
// Domyślnie Collator bierze pod uwagę bieżące ustawienia regionalne komputera / aplikacji
// lines.sort(Collator.getInstance());
// Alfabet konkretnego języka - poprzez parametr Locale
// lines.sort(Collator.getInstance(Locale.FRANCE));
// lines.sort(Collator.getInstance(new Locale("pl", "PL")));
// od Java 21 już nie za pomocą new, tylko tak:
lines.sort(Collator.getInstance(Locale.of("pl", "PL")));
// lines.sort(Collator.getInstance(Locale.of("en", "US")));
System.out.println("Zapis pliku");
Files.write(Path.of("pan_tadeusz_sort.txt"), lines);
System.out.println("Gotowe. Zapisano " + lines.size() + " linii");
} catch (IOException e) {
e.printStackTrace();
}
}
}
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