Commit 021c57d8 by Patryk Czarnik

Zbieranie danych - Set

parent aab545a6
...@@ -34,6 +34,7 @@ public class P1_Tablica { ...@@ -34,6 +34,7 @@ public class P1_Tablica {
System.out.println(); System.out.println();
System.out.println(); System.out.println();
// Drugi etap: użytkownik podaje numer, a program odczytuje wartość z podanej pozycji.
System.out.println("Podawaj numer pozycji, a zakończ pisząc -1"); System.out.println("Podawaj numer pozycji, a zakończ pisząc -1");
while(true) { while(true) {
System.out.print("numer: "); System.out.print("numer: ");
......
...@@ -11,8 +11,14 @@ public class P2_Lista { ...@@ -11,8 +11,14 @@ public class P2_Lista {
Scanner scanner = new Scanner(System.in); Scanner scanner = new Scanner(System.in);
// W tej wersji dane są zapisywane w liście - nie potrzebujemy pytać o rozmiar. // W tej wersji dane są zapisywane w liście - nie potrzebujemy pytać o rozmiar.
// Listy:
// - mogą zawierać duplikaty (tę wartość kilka razy),
// - przechowują elementy na określonych pozycjach od 0 do size-1,
// za pomocą get(i) można odczytać, a za pomocą set(i, nowaWartosc) zmienić konkretny element listy
List<String> lista = new ArrayList<>(); List<String> lista = new ArrayList<>();
System.out.println("Podawaj imiona. Zakończ wciskając enter.");
for(;;) { // różnoważne while(true) for(;;) { // różnoważne while(true)
System.out.print("Podaj następne imię: "); System.out.print("Podaj następne imię: ");
String imie = scanner.nextLine(); String imie = scanner.nextLine();
......
package p10_zbieranie_danych;
import java.util.*;
/* Program gromadzi w pamięci dane wprowadzane przez użytkownika (przykładowo będą to imiona)
a następnie je wypisuje i pozwala odczytywać je pojedynczo.
*/
public class P3_Zbior {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// W tej wersji dane są zapisywane w zbiorze.
// Zbiory:
// - nie zawierają duplikatów (dodanie kolejny raz tej samej wartości nie zmienia już zbioru),
// - mają prawo zmienić kolejność elementów
// → HashSet zmienia kolejność (wg własnych zasad w oparciu o haszkody, na co nie mamy wpływu)
// → LinkedHashSet nie zmienia kolejności (zachowuje początkową kolejność, w jakiej elementy były dodawane)
// → TreeSet samoczynnie sortuje elementy
// Podstawową (i wydajną) operacją dla zbioru jest sprawdzenie czy element należy do zbioru.
Set<String> zbior = new HashSet<>();
System.out.println("Podawaj imiona. Zakończ wciskając enter.");
while(true) {
System.out.print("Podaj następne imię: ");
String imie = scanner.nextLine();
if(imie.isEmpty()) break;
if(zbior.add(imie)) {
System.out.println("imię " + imie +" zostało dodane");
} else {
System.out.println("imię " + imie +" występowało już wcześniej");
}
}
// wypisanie zbioru = jego zawartości
System.out.println(zbior);
System.out.println();
for(String imie : zbior) {
System.out.print(imie.toUpperCase() + " ");
}
System.out.println();
System.out.println();
// W przypadku zbiorów najbardziej podstawową operacją odczytu jest sprawdzenie,
// czy zbiór zawiera wartość. Ta operacja dla zbiorów działa wydajnie.
System.out.println("Podawaj imiona, a ja sprawdzę, czy je posiadam. Zakończ wciskając enter.");
while(true) {
System.out.print("imie: ");
String imie = scanner.nextLine();
if(imie.isEmpty()) break;
if(zbior.contains(imie)) {
System.out.println("osoba " + imie + " należy do zbioru");
} else {
System.out.println("osoba " + imie + " NIE należy do zbioru");
}
}
}
}
package p10_zbieranie_danych;
import java.text.Collator;
import java.util.Locale;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
/* Program gromadzi w pamięci dane wprowadzane przez użytkownika (przykładowo będą to imiona)
a następnie je wypisuje i pozwala odczytywać je pojedynczo.
*/
public class P4_TreeSet {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// W tej wersji dane są zapisywane w zbiorze.
// Zbiory:
// - nie zawierają duplikatów (dodanie kolejny raz tej samej wartości nie zmienia już zbioru),
// - mają prawo zmienić kolejność elementów
// → HashSet zmienia kolejność (wg własnych zasad w oparciu o haszkody, na co nie mamy wpływu)
// → LinkedHashSet nie zmienia kolejności (zachowuje początkową kolejność, w jakiej elementy były dodawane)
// → TreeSet samoczynnie sortuje elementy
// Podstawową (i wydajną) operacją dla zbioru jest sprawdzenie czy element należy do zbioru.
// Set<String> zbior = new TreeSet<>();
// kolejność alfabetu tego języka, który jest ustawiony w systemie
// Set<String> zbior = new TreeSet<>(Collator.getInstance());
// kolejność alfabetu polskiego
Set<String> zbior = new TreeSet<>(Collator.getInstance(Locale.of("pl", "PL")));
System.out.println("Podawaj imiona. Zakończ wciskając enter.");
while(true) {
System.out.print("Podaj następne imię: ");
String imie = scanner.nextLine();
if(imie.isEmpty()) break;
if(zbior.add(imie)) {
System.out.println("imię " + imie +" zostało dodane");
} else {
System.out.println("imię " + imie +" występowało już wcześniej");
}
}
// wypisanie zbioru = jego zawartości
System.out.println(zbior);
System.out.println();
for(String imie : zbior) {
System.out.print(imie.toUpperCase() + " ");
}
System.out.println();
System.out.println();
// W przypadku zbiorów najbardziej podstawową operacją odczytu jest sprawdzenie,
// czy zbiór zawiera wartość. Ta operacja dla zbiorów działa wydajnie.
System.out.println("Podawaj imiona, a ja sprawdzę, czy je posiadam. Zakończ wciskając enter.");
while(true) {
System.out.print("imie: ");
String imie = scanner.nextLine();
if(imie.isEmpty()) break;
if(zbior.contains(imie)) {
System.out.println("osoba " + imie + " należy do zbioru");
} else {
System.out.println("osoba " + imie + " NIE należy do zbioru");
}
}
}
}
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