Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
alx_mszczonow_1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Patryk Czarnik
alx_mszczonow_1
Commits
06aa1c14
Commit
06aa1c14
authored
Jun 27, 2023
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ZbieranieDanych Set
i dużo gotowych
parent
1165734a
Hide whitespace changes
Inline
Side-by-side
Showing
33 changed files
with
1424 additions
and
0 deletions
+1424
-0
ZbieranieDanych2_Lista.java
...ain/java/p20_zbieranie_danych/ZbieranieDanych2_Lista.java
+4
-0
ZbieranieDanych5_Set.java
src/main/java/p20_zbieranie_danych/ZbieranieDanych5_Set.java
+39
-0
ZbieranieDanych6_TreeSet.java
...n/java/p20_zbieranie_danych/ZbieranieDanych6_TreeSet.java
+33
-0
ZbieranieDanych7_HashMap.java
...n/java/p20_zbieranie_danych/ZbieranieDanych7_HashMap.java
+45
-0
DeklaracjeGeneryczne.java
src/main/java/p22_kolekcje/a_list/DeklaracjeGeneryczne.java
+37
-0
ListaLiczb.java
src/main/java/p22_kolekcje/a_list/ListaLiczb.java
+39
-0
Listy.java
src/main/java/p22_kolekcje/a_list/Listy.java
+88
-0
ListyAll.java
src/main/java/p22_kolekcje/a_list/ListyAll.java
+57
-0
NoweOperacjeList.java
src/main/java/p22_kolekcje/a_list/NoweOperacjeList.java
+53
-0
PorownanieSzybkosciList.java
...ain/java/p22_kolekcje/a_list/PorownanieSzybkosciList.java
+72
-0
ListyIZbiory.java
src/main/java/p22_kolekcje/b_set_map/ListyIZbiory.java
+38
-0
NoweOperacjeMap.java
src/main/java/p22_kolekcje/b_set_map/NoweOperacjeMap.java
+44
-0
Slowniki.java
src/main/java/p22_kolekcje/b_set_map/Slowniki.java
+65
-0
Tree1.java
src/main/java/p22_kolekcje/b_set_map/Tree1.java
+79
-0
Tree2.java
src/main/java/p22_kolekcje/b_set_map/Tree2.java
+49
-0
ZbiorDziwnieSortowany.java
...in/java/p22_kolekcje/b_set_map/ZbiorDziwnieSortowany.java
+68
-0
ZmianaKolejnosciWHaszSecie.java
...va/p22_kolekcje/b_set_map/ZmianaKolejnosciWHaszSecie.java
+33
-0
KolejkaJakoStos.java
src/main/java/p22_kolekcje/c_queue/KolejkaJakoStos.java
+25
-0
Kolejki.java
src/main/java/p22_kolekcje/c_queue/Kolejki.java
+49
-0
Kolejki_Operacje.java
src/main/java/p22_kolekcje/c_queue/Kolejki_Operacje.java
+74
-0
Iteratory.java
src/main/java/p22_kolekcje/e_iterator/Iteratory.java
+32
-0
IteratoryListowe.java
src/main/java/p22_kolekcje/e_iterator/IteratoryListowe.java
+43
-0
Konkurencja1.java
src/main/java/p22_kolekcje/e_iterator/Konkurencja1.java
+31
-0
Konkurencja2.java
src/main/java/p22_kolekcje/e_iterator/Konkurencja2.java
+36
-0
Konkurencja3.java
src/main/java/p22_kolekcje/e_iterator/Konkurencja3.java
+36
-0
Konkurencja4.java
src/main/java/p22_kolekcje/e_iterator/Konkurencja4.java
+31
-0
Konkurencja6.java
src/main/java/p22_kolekcje/e_iterator/Konkurencja6.java
+55
-0
Konkurencja7a.java
src/main/java/p22_kolekcje/e_iterator/Konkurencja7a.java
+24
-0
Konkurencja7b.java
src/main/java/p22_kolekcje/e_iterator/Konkurencja7b.java
+24
-0
KomparatorDlugosciNapisow.java
.../p22_kolekcje/s_sortowanie/KomparatorDlugosciNapisow.java
+13
-0
Sortowanie1.java
src/main/java/p22_kolekcje/s_sortowanie/Sortowanie1.java
+32
-0
Sortowanie2.java
src/main/java/p22_kolekcje/s_sortowanie/Sortowanie2.java
+55
-0
Sortowanie3.java
src/main/java/p22_kolekcje/s_sortowanie/Sortowanie3.java
+21
-0
No files found.
src/main/java/p20_zbieranie_danych/ZbieranieDanych2_Lista.java
View file @
06aa1c14
...
@@ -2,6 +2,10 @@ package p20_zbieranie_danych;
...
@@ -2,6 +2,10 @@ package p20_zbieranie_danych;
import
java.util.*
;
import
java.util.*
;
// 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
public
class
ZbieranieDanych2_Lista
{
public
class
ZbieranieDanych2_Lista
{
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
Scanner
scanner
=
new
Scanner
(
System
.
in
);
Scanner
scanner
=
new
Scanner
(
System
.
in
);
...
...
src/main/java/p20_zbieranie_danych/ZbieranieDanych5_Set.java
0 → 100644
View file @
06aa1c14
package
p20_zbieranie_danych
;
import
java.util.*
;
// 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ść
// → 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.
public
class
ZbieranieDanych5_Set
{
public
static
void
main
(
String
[]
args
)
{
Scanner
scanner
=
new
Scanner
(
System
.
in
);
Set
<
String
>
zbior
=
new
HashSet
<>();
System
.
out
.
println
(
"Aby zakończyć pobieranie danych, wpisz pusty napis"
);
while
(
true
)
{
System
.
out
.
print
(
"Podaj kolejną wartość: "
);
String
s
=
scanner
.
nextLine
();
if
(
s
.
isEmpty
())
break
;
zbior
.
add
(
s
);
}
System
.
out
.
println
(
zbior
);
System
.
out
.
println
();
System
.
out
.
println
(
"Podawaj wartości, aby sprawdzić czy należą do zbioru. Zakończ pustym stringiem"
);
while
(
true
)
{
System
.
out
.
print
(
"Podaj: "
);
String
s
=
scanner
.
nextLine
();
if
(
s
.
isEmpty
())
break
;
if
(
zbior
.
contains
(
s
))
{
System
.
out
.
println
(
s
+
" należy do zbioru"
);
}
else
{
System
.
out
.
println
(
s
+
" nie należy do zbioru"
);
}
}
}
}
src/main/java/p20_zbieranie_danych/ZbieranieDanych6_TreeSet.java
0 → 100644
View file @
06aa1c14
package
p20_zbieranie_danych
;
import
java.util.Scanner
;
import
java.util.Set
;
import
java.util.TreeSet
;
public
class
ZbieranieDanych6_TreeSet
{
public
static
void
main
(
String
[]
args
)
{
Scanner
scanner
=
new
Scanner
(
System
.
in
);
Set
<
String
>
zbior
=
new
TreeSet
<>();
System
.
out
.
println
(
"Aby zakończyć pobieranie danych, wpisz pusty napis"
);
while
(
true
)
{
System
.
out
.
print
(
"Podaj kolejną wartość: "
);
String
s
=
scanner
.
nextLine
();
if
(
s
.
isEmpty
())
break
;
zbior
.
add
(
s
);
}
System
.
out
.
println
(
zbior
);
System
.
out
.
println
();
System
.
out
.
println
(
"Podawaj wartości, aby sprawdzić czy należą do zbioru. Zakończ pustym stringiem"
);
while
(
true
)
{
System
.
out
.
print
(
"Podaj: "
);
String
s
=
scanner
.
nextLine
();
if
(
s
.
isEmpty
())
break
;
if
(
zbior
.
contains
(
s
))
{
System
.
out
.
println
(
s
+
" należy do zbioru"
);
}
else
{
System
.
out
.
println
(
s
+
" nie należy do zbioru"
);
}
}
}
}
src/main/java/p20_zbieranie_danych/ZbieranieDanych7_HashMap.java
0 → 100644
View file @
06aa1c14
package
p20_zbieranie_danych
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Scanner
;
public
class
ZbieranieDanych7_HashMap
{
// Słowniki (mapy):
// - zawierają pary klucz → wartość
// - klucze nie mogą się powtarzać, wartości mogą
// - wydajne są operacje dodawanie elementu i pobierania/wyszukiwania poprzez klucz
// - niewydaje jest wyszukiwanie poprzez wartość
public
static
void
main
(
String
[]
args
)
{
Scanner
scanner
=
new
Scanner
(
System
.
in
);
// Przykładowo tutaj dla imienia (string) pamiętamy wiek (Integer)
Map
<
String
,
Integer
>
slownik
=
new
HashMap
<>();
while
(
true
)
{
System
.
out
.
print
(
"Podaj kolejne imię: "
);
String
imie
=
scanner
.
nextLine
();
if
(
imie
.
isEmpty
())
break
;
System
.
out
.
print
(
"Ile lat ma ta osoba? "
);
int
wiek
=
scanner
.
nextInt
();
scanner
.
nextLine
();
slownik
.
put
(
imie
,
wiek
);
}
System
.
out
.
println
(
slownik
);
System
.
out
.
println
();
System
.
out
.
println
(
"Podawaj imiona, aby sprawdzić, a zakończ pustym napisem."
);
while
(
true
)
{
System
.
out
.
print
(
"Podaj szukane imię: "
);
String
szukane
=
scanner
.
nextLine
();
if
(
szukane
.
isEmpty
())
break
;
if
(
slownik
.
containsKey
(
szukane
))
{
int
wiek
=
slownik
.
get
(
szukane
);
System
.
out
.
println
(
"Osoba "
+
szukane
+
" ma "
+
wiek
+
" lat."
);
}
else
{
System
.
out
.
println
(
"Osoba "
+
szukane
+
" nie należy do słownika."
);
}
}
}
}
src/main/java/p22_kolekcje/a_list/DeklaracjeGeneryczne.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
a_list
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
DeklaracjeGeneryczne
{
public
static
void
main
(
String
[]
args
)
{
List
l1
=
new
ArrayList
();
ArrayList
l2
=
new
ArrayList
();
List
<
String
>
l3
=
new
ArrayList
<
String
>();
List
<
String
>
l4
=
new
ArrayList
<>();
// diamond operator od Javy 7
List
<
String
>
l5
=
new
ArrayList
();
List
l6
=
new
ArrayList
<>();
// lista Object-ów
//NK List<> l7 = new ArrayList<String>();
List
<
List
<
Integer
>>
l8
=
new
ArrayList
<>();
//NK List<List<Integer>> l9 = new ArrayList<<>>();
//NK List<List<Integer>> l10 = new ArrayList<List<>>();
List
<
List
<
Integer
>>
l11
=
new
ArrayList
<
List
<
Integer
>>();
//NK List<int> l12 = new ArrayList<>();
List
<
int
[]>
l13
=
new
ArrayList
<>();
// "lista nie wiadomo czego"
// w praktyce takiej listy mogę używać tylko do odczytu, nie mogę w niej niczego zapisać
List
<?>
l14
=
new
ArrayList
<>();
List
<?>
l15
=
new
ArrayList
<
String
>();
// l15.add("ala");
// to nie to samo, co lista Objectów, bo np lista Stringów nie jest tym samym co lista Objectów, i nie można wpisać
//NK List<Object> l16 = new ArrayList<String>();
}
}
src/main/java/p22_kolekcje/a_list/ListaLiczb.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
a_list
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
ListaLiczb
{
public
static
void
main
(
String
[]
args
)
{
//NK List<int> lista = new ArrayList<>();
List
<
Integer
>
lista
=
new
ArrayList
<>();
lista
.
add
(
5
);
lista
.
add
(
6
);
lista
.
add
(
7
);
lista
.
add
(
8
);
lista
.
add
(
9
);
lista
.
add
(
10
);
System
.
out
.
println
(
lista
);
System
.
out
.
println
(
"rozmiar: "
+
lista
.
size
());
// if(lista.remove(5)) {
// }
Integer
element
=
lista
.
remove
(
5
);
// wg indeksu
System
.
out
.
println
(
"Usunięty element: "
+
element
);
System
.
out
.
println
(
lista
);
Integer
x
=
9
;
if
(
lista
.
remove
(
x
))
{
// wg wartości
System
.
out
.
println
(
"usunąłem wartość 9"
);
}
boolean
b
=
lista
.
remove
((
Integer
)
5
);
// OK, wg wartości
// boolean b = lista.remove((Object)5); // wg wartości
System
.
out
.
println
(
"Czy usunięto? "
+
b
);
System
.
out
.
println
(
lista
);
}
}
src/main/java/p22_kolekcje/a_list/Listy.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
a_list
;
import
java.util.List
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collections
;
public
class
Listy
{
public
static
void
main
(
String
[]
args
)
{
List
<
String
>
lista
=
new
ArrayList
<>();
System
.
out
.
println
(
lista
);
// dodaje na koniec
lista
.
add
(
"ola"
);
lista
.
add
(
"ala"
);
boolean
coSieStalo
=
lista
.
add
(
"ela"
);
System
.
out
.
println
(
coSieStalo
);
if
(
lista
.
add
(
"iza"
))
{
System
.
out
.
println
(
"Iza też"
);
}
System
.
out
.
println
(
lista
);
System
.
out
.
println
();
// odczyt z określonej pozycji, numeracja od 0 jak w tablicach
String
x
=
lista
.
get
(
0
);
// lista[0] - tak się nie da
System
.
out
.
println
(
x
);
x
=
lista
.
get
(
2
);
System
.
out
.
println
(
x
);
//EXN x = lista.get(lista.size());
// System.out.println(x);
// dodaje na okreslona pozycje, przesuwa dotychczasowe elementy w prawo
// tu może być od 0 do 4, ale już nie 5 (IOOBExn)
lista
.
add
(
2
,
"ewa"
);
lista
.
add
(
lista
.
size
(),
"ostatnia"
);
// OK
System
.
out
.
println
(
lista
);
// nadpisuje element na podanej pozycji nowym elementem
lista
.
set
(
2
,
"ula"
);
System
.
out
.
println
(
lista
);
System
.
out
.
println
();
lista
.
add
(
0
,
"ala"
);
System
.
out
.
println
(
lista
);
// usuwa z określonej pozycji, zwraca obiekt
String
wynik
=
lista
.
remove
(
3
);
System
.
out
.
println
(
"usunąłem element : "
+
wynik
);
System
.
out
.
println
(
lista
);
// to by usunęło od razu wszystkie wystąpienia elementu "ala"
// boolean b = lista.removeAll(Collections.singleton("ala"));
// to usuwa pierwsze wystąpienie, elementy są porównywane za pomocą equals, wynik boolean mówi czy element został usunięty
boolean
b
=
lista
.
remove
(
"ala"
);
System
.
out
.
println
(
"bool : "
+
b
);
System
.
out
.
println
(
lista
);
b
=
lista
.
remove
(
"ala"
);
System
.
out
.
println
(
"bool : "
+
b
);
System
.
out
.
println
(
lista
);
b
=
lista
.
remove
(
"ala"
);
System
.
out
.
println
(
"bool : "
+
b
);
System
.
out
.
println
(
lista
);
System
.
out
.
println
();
lista
.
addAll
(
Arrays
.
asList
(
"ola"
,
"ela"
,
"ewa"
,
"kasia"
,
"marysia"
,
"aga"
));
System
.
out
.
println
(
lista
);
System
.
out
.
println
(
"indexOf: "
+
lista
.
indexOf
(
"ewa"
));
System
.
out
.
println
(
"contains: "
+
lista
.
contains
(
"ewa"
));
System
.
out
.
println
();
System
.
out
.
println
(
"indexOf: "
+
lista
.
indexOf
(
"Ewa"
));
// -1
System
.
out
.
println
(
"contains: "
+
lista
.
contains
(
"Ewa"
));
// false
System
.
out
.
println
();
Collections
.
sort
(
lista
);
System
.
out
.
println
(
lista
);
for
(
String
s
:
lista
)
{
System
.
out
.
println
(
"Kolejny element: "
+
s
);
}
}
}
src/main/java/p22_kolekcje/a_list/ListyAll.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
a_list
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
ListyAll
{
public
static
void
main
(
String
[]
args
)
{
List
<
String
>
a
=
new
ArrayList
<>();
a
.
add
(
"Ala"
);
a
.
add
(
"Ola"
);
a
.
add
(
"Ela"
);
a
.
add
(
"Ula"
);
System
.
out
.
println
(
"a = "
+
a
);
List
<
String
>
b
=
new
ArrayList
<>(
a
);
System
.
out
.
println
(
"a = "
+
b
);
List
<
String
>
c
=
new
ArrayList
<>();
c
.
add
(
"Ala"
);
c
.
add
(
"Ula"
);
System
.
out
.
println
(
"c = "
+
c
);
List
<
String
>
d
=
new
ArrayList
<>();
d
.
add
(
"Ala"
);
d
.
add
(
"Gosia"
);
System
.
out
.
println
(
"d = "
+
d
);
d
.
addAll
(
a
);
System
.
out
.
println
(
"d = "
+
d
);
System
.
out
.
println
(
a
.
containsAll
(
c
));
// T
System
.
out
.
println
(
c
.
containsAll
(
a
));
// F
c
.
add
(
"Basia"
);
// nie ma w a
System
.
out
.
println
(
"c = "
+
c
);
boolean
czy
=
a
.
removeAll
(
c
);
System
.
out
.
println
(
czy
);
// T
System
.
out
.
println
(
"a = "
+
a
);
// usunął Ala i Ula, a nie przejął się Basią
System
.
out
.
println
();
a
.
add
(
"Genowefa"
);
a
.
add
(
"Hermenegilda"
);
a
.
add
(
"Genowefa"
);
System
.
out
.
println
(
"a = "
+
a
);
System
.
out
.
println
(
"b = "
+
b
);
// zostawia w liście a tylko te elementy, które wystepują w b
czy
=
a
.
retainAll
(
b
);
System
.
out
.
println
(
"retainAll "
+
b
);
System
.
out
.
println
(
"a = "
+
a
);
System
.
out
.
println
(
"b = "
+
b
);
}
}
src/main/java/p22_kolekcje/a_list/NoweOperacjeList.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
a_list
;
import
java.text.Collator
;
import
java.util.ArrayList
;
import
java.util.Comparator
;
import
java.util.List
;
import
java.util.Locale
;
public
class
NoweOperacjeList
{
public
static
void
main
(
String
[]
args
)
{
ArrayList
<
String
>
lista
=
new
ArrayList
<>();
lista
.
add
(
"Ala"
);
lista
.
add
(
"Ola"
);
lista
.
add
(
"Kasia"
);
lista
.
add
(
"Ela"
);
lista
.
add
(
"Łucja"
);
lista
.
add
(
"Ula"
);
lista
.
add
(
"Asia"
);
lista
.
add
(
"Zosia"
);
System
.
out
.
println
(
lista
);
System
.
out
.
println
();
lista
.
sort
(
null
);
// lista.sort(Comparator.reverseOrder());
lista
.
sort
(
Collator
.
getInstance
());
// lista.sort(Collator.getInstance(Locale.CHINA));
// lista.sort(Collator.getInstance().reversed());
System
.
out
.
println
(
lista
);
System
.
out
.
println
();
lista
.
forEach
(
s
->
System
.
out
.
print
(
s
+
", "
));
System
.
out
.
println
();
System
.
out
.
println
();
List
<
String
>
lista1
=
(
List
<
String
>)
lista
.
clone
();
System
.
out
.
println
(
lista1
);
// predykat; operacja usuwa z listy wszystkie spełaniające warunek
lista1
.
removeIf
(
s
->
s
.
length
()
<=
3
);
System
.
out
.
println
(
lista1
);
System
.
out
.
println
();
List
<
String
>
lista2
=
(
List
<
String
>)
lista
.
clone
();
System
.
out
.
println
(
lista2
);
lista2
.
replaceAll
(
s
->
s
.
toUpperCase
());
// lambda expression
// lista2.replaceAll(String::toUpperCase); // method reference - w tym przypadku równoważnie
System
.
out
.
println
(
lista2
);
System
.
out
.
println
();
}
}
src/main/java/p22_kolekcje/a_list/PorownanieSzybkosciList.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
a_list
;
import
java.util.ArrayList
;
import
java.util.LinkedList
;
import
java.util.List
;
public
class
PorownanieSzybkosciList
{
public
static
void
testujListe
(
List
<
Integer
>
lista
)
{
long
start
,
koniec
;
int
suma
;
System
.
out
.
print
(
"Wstawianie 250 tys. na koniec listy (add)... "
);
start
=
System
.
currentTimeMillis
();
for
(
int
i
=
0
;
i
<
250000
;
i
++)
{
lista
.
add
(
i
);
}
koniec
=
System
.
currentTimeMillis
();
System
.
out
.
println
(
koniec
-
start
+
" ms"
);
lista
.
clear
();
// usuwa całą zawartość
System
.
out
.
print
(
"Wstawianie 500 tys. na koniec listy (add)... "
);
start
=
System
.
currentTimeMillis
();
for
(
int
i
=
0
;
i
<
500000
;
i
++)
{
lista
.
add
(
i
);
}
koniec
=
System
.
currentTimeMillis
();
System
.
out
.
println
(
koniec
-
start
+
" ms"
);
System
.
out
.
println
(
"\nDodawanie na początek... "
);
start
=
System
.
currentTimeMillis
();
for
(
int
i
=
0
;
i
<
10000
;
i
++)
{
lista
.
add
(
0
,
333
);
// 333 jest elementem (wartością) a nie indeksem
// Szybko dla LinkedList, wolno dla ArrayList
}
koniec
=
System
.
currentTimeMillis
();
System
.
out
.
println
(
koniec
-
start
+
" ms"
);
System
.
out
.
println
(
"\nWybieranie po indeksie... "
);
start
=
System
.
currentTimeMillis
();
suma
=
0
;
for
(
int
i
=
0
;
i
<
5000
;
i
++)
{
suma
+=
lista
.
get
(
i
*
100
);
// Szybkie dla ArrayList, wolne dla LinkedList
}
koniec
=
System
.
currentTimeMillis
();
System
.
out
.
println
(
koniec
-
start
+
" ms"
);
System
.
out
.
println
(
"wynik="
+
suma
);
System
.
out
.
println
(
"\nOdczytanie wszystkich elementów foreach"
);
start
=
System
.
currentTimeMillis
();
suma
=
0
;
for
(
int
x
:
lista
)
{
suma
+=
x
;
}
koniec
=
System
.
currentTimeMillis
();
System
.
out
.
println
(
koniec
-
start
+
" ms"
);
System
.
out
.
println
(
"wynik="
+
suma
);
}
public
static
void
main
(
String
[]
args
)
{
List
<
Integer
>
linked
=
new
LinkedList
<>();
List
<
Integer
>
tablicowa
=
new
ArrayList
<>();
System
.
out
.
println
(
"LinkedList:"
);
testujListe
(
linked
);
System
.
out
.
println
(
"\n\n================"
);
System
.
out
.
println
(
"ArrayList:"
);
testujListe
(
tablicowa
);
}
}
src/main/java/p22_kolekcje/b_set_map/ListyIZbiory.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
b_set_map
;
import
java.util.ArrayList
;
import
java.util.HashSet
;
import
java.util.LinkedHashSet
;
import
java.util.LinkedList
;
import
java.util.TreeSet
;
public
class
ListyIZbiory
{
public
static
void
main
(
String
[]
args
)
{
ArrayList
<
String
>
al
=
new
ArrayList
<>();
LinkedList
<
String
>
lista
=
new
LinkedList
<>();
HashSet
<
String
>
hasz
=
new
HashSet
<>();
LinkedHashSet
<
String
>
linkedHasz
=
new
LinkedHashSet
<>();
TreeSet
<
String
>
drzewo
=
new
TreeSet
<>();
al
.
add
(
"ala"
);
lista
.
add
(
"ala"
);
drzewo
.
add
(
"ala"
);
hasz
.
add
(
"ala"
);
linkedHasz
.
add
(
"ala"
);
al
.
add
(
"ola"
);
lista
.
add
(
"ola"
);
drzewo
.
add
(
"ola"
);
hasz
.
add
(
"ola"
);
linkedHasz
.
add
(
"ola"
);
al
.
add
(
"ela"
);
lista
.
add
(
"ela"
);
drzewo
.
add
(
"ela"
);
hasz
.
add
(
"ela"
);
linkedHasz
.
add
(
"ela"
);
al
.
add
(
"ula"
);
lista
.
add
(
"ula"
);
drzewo
.
add
(
"ula"
);
hasz
.
add
(
"ula"
);
linkedHasz
.
add
(
"ula"
);
al
.
add
(
"ola"
);
lista
.
add
(
"ola"
);
drzewo
.
add
(
"ola"
);
hasz
.
add
(
"ola"
);
linkedHasz
.
add
(
"ola"
);
System
.
out
.
println
(
"ArrayList: "
+
al
);
System
.
out
.
println
(
"LinkedList: "
+
lista
);
System
.
out
.
println
(
"TreeSet: "
+
drzewo
);
System
.
out
.
println
(
"HashSet: "
+
hasz
);
System
.
out
.
println
(
"LinkedHashSet: "
+
linkedHasz
);
System
.
out
.
println
();
// dla wszystkich list wolno działa operacja contains / indexOf
System
.
out
.
println
(
al
.
contains
(
"ela"
));
// dla wszystkich zbiorów szybko działa operacja contains
System
.
out
.
println
(
hasz
.
contains
(
"ela"
));
}
}
src/main/java/p22_kolekcje/b_set_map/NoweOperacjeMap.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
b_set_map
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.TreeMap
;
public
class
NoweOperacjeMap
{
public
static
void
main
(
String
[]
args
)
{
TreeMap
<
String
,
Integer
>
map
=
new
TreeMap
<>();
map
.
put
(
"Ala"
,
20
);
map
.
put
(
"Ola"
,
30
);
System
.
out
.
println
(
map
);
map
.
putIfAbsent
(
"Ala"
,
25
);
// nie wpisuje
map
.
putIfAbsent
(
"Ela"
,
45
);
// wpisuje
System
.
out
.
println
(
map
);
map
.
replace
(
"Ala"
,
28
);
// zamienia
map
.
replace
(
"Ula"
,
48
);
// nic się nie dzieje
System
.
out
.
println
(
map
);
map
.
replace
(
"Ala"
,
40
,
41
);
// jeśli taka była poprzednia wartość - tutaj nic się nie stanie
System
.
out
.
println
(
map
);
map
.
replaceAll
((
k
,
v
)
->
v
+
1
);
// zwiększa wszystkie wartości o 1
System
.
out
.
println
(
map
);
map
.
replaceAll
((
k
,
v
)
->
k
.
startsWith
(
"A"
)
?
v
+
1
:
v
);
// zwiększa o 1 tylko słowa na literę A
System
.
out
.
println
(
map
);
// dodaje nowy wpis z wartością 10, albo dodaje 10 do istniejącej wartości
map
.
merge
(
"Ola"
,
10
,
Math:
:
addExact
);
// (x,y) -> x+y
map
.
merge
(
"Ewa"
,
10
,
Math:
:
addExact
);
System
.
out
.
println
(
map
);
System
.
out
.
println
();
// Zamiast pętli, możena elementy przeglądać w ten sposób:
map
.
forEach
((
k
,
v
)
->
{
System
.
out
.
println
(
"Klucz "
+
k
+
" ma wartość "
+
v
);
});
}
}
src/main/java/p22_kolekcje/b_set_map/Slowniki.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
b_set_map
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.HashMap
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.TreeMap
;
public
class
Slowniki
{
public
static
void
main
(
String
[]
args
)
{
Map
<
String
,
Integer
>
hasz
=
new
HashMap
<>();
Map
<
String
,
Integer
>
linkedHasz
=
new
LinkedHashMap
<>();
Map
<
String
,
Integer
>
drzewo
=
new
TreeMap
<>();
hasz
.
put
(
"ala"
,
20
);
drzewo
.
put
(
"ala"
,
20
);
linkedHasz
.
put
(
"ala"
,
20
);
hasz
.
put
(
"ola"
,
30
);
drzewo
.
put
(
"ola"
,
20
);
linkedHasz
.
put
(
"ola"
,
30
);
hasz
.
put
(
"ela"
,
20
);
drzewo
.
put
(
"ela"
,
20
);
linkedHasz
.
put
(
"ela"
,
20
);
hasz
.
put
(
"ula"
,
55
);
drzewo
.
put
(
"ula"
,
55
);
linkedHasz
.
put
(
"ula"
,
55
);
System
.
out
.
println
(
hasz
.
get
(
"ela"
));
//20
System
.
out
.
println
(
hasz
.
get
(
"ewa"
));
//null
System
.
out
.
println
(
hasz
.
containsKey
(
"ela"
));
// szybkie
System
.
out
.
println
(
hasz
.
containsValue
(
55
));
// wolne
System
.
out
.
println
(
"\nTreeMap: "
+
drzewo
);
System
.
out
.
println
(
"HashMap: "
+
hasz
);
System
.
out
.
println
(
"LinkedHashMap: "
+
linkedHasz
);
System
.
out
.
println
(
"====================================\n"
);
hasz
.
put
(
"ola"
,
31
);
drzewo
.
put
(
"ola"
,
31
);
linkedHasz
.
put
(
"ola"
,
31
);
System
.
out
.
println
(
"TreeMap: "
+
drzewo
);
System
.
out
.
println
(
"HashMap: "
+
hasz
);
System
.
out
.
println
(
"LinkedHashMap: "
+
linkedHasz
);
System
.
out
.
println
(
"\nWszystkie wpisy:"
);
for
(
Map
.
Entry
<
String
,
Integer
>
entry
:
drzewo
.
entrySet
())
{
System
.
out
.
println
(
entry
.
getKey
()
+
" -> "
+
entry
.
getValue
());
}
System
.
out
.
println
(
"\nWszystkie klucze:"
);
for
(
String
s
:
drzewo
.
keySet
())
{
System
.
out
.
println
(
s
);
}
System
.
out
.
println
(
"\nWszystkie wartości:"
);
for
(
Integer
i
:
drzewo
.
values
())
{
System
.
out
.
println
(
i
);
}
// Można też przypisać na zmienne:
Set
<
Map
.
Entry
<
String
,
Integer
>>
zbiorWpisow
=
hasz
.
entrySet
();
Set
<
String
>
klucze
=
hasz
.
keySet
();
Collection
<
Integer
>
wartosci
=
hasz
.
values
();
// Jak zrobić listę kluczy?
List
<
String
>
kluczel
=
new
ArrayList
<>(
hasz
.
keySet
());
}
}
src/main/java/p22_kolekcje/b_set_map/Tree1.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
b_set_map
;
import
java.util.Arrays
;
import
java.util.SortedSet
;
import
java.util.TreeSet
;
public
class
Tree1
{
public
static
void
main
(
String
[]
args
)
{
// TreeSet implementuje dodatkowe interfejsy:
// SortedSet<String>
// NavigableSet<String>
TreeSet
<
String
>
imiona
=
new
TreeSet
<>(
Arrays
.
asList
(
"Ala"
,
"Ola"
,
"Ula"
,
"Ela"
,
"Ewa"
,
"Ania"
,
"Kasia"
,
"Aga"
,
"Iwona"
,
"Magda"
,
"Iza"
));
System
.
out
.
println
(
imiona
);
SortedSet
<
String
>
head1
=
imiona
.
headSet
(
"Iwona"
);
System
.
out
.
println
(
head1
);
// obejmuje wszystkie elementy < Iwona
SortedSet
<
String
>
head2
=
imiona
.
headSet
(
"Iwona"
,
true
);
System
.
out
.
println
(
head2
);
// obejmuje wszystkie elementy <= Iwona
SortedSet
<
String
>
tail1
=
imiona
.
tailSet
(
"Iwona"
);
System
.
out
.
println
(
tail1
);
// obejmuje wszystkie elementy >= Iwona
SortedSet
<
String
>
tail2
=
imiona
.
tailSet
(
"Iwona"
,
false
);
System
.
out
.
println
(
tail2
);
// obejmuje wszystkie elementy > Iwona
// headSet i tailSet (bez parametru inclusive) dają łącznie cały zbiór
System
.
out
.
println
();
// Jako granicę można podawać także elementy niewystępujące w kolekcji
SortedSet
<
String
>
head3
=
imiona
.
headSet
(
"Jola"
);
System
.
out
.
println
(
head3
);
SortedSet
<
String
>
sub1
=
imiona
.
subSet
(
"Ela"
,
"Iwona"
);
// domyslnie inclusive: true / false
System
.
out
.
println
(
sub1
);
SortedSet
<
String
>
sub2
=
imiona
.
subSet
(
"Ela"
,
true
,
"Iwona"
,
true
);
System
.
out
.
println
(
sub2
);
System
.
out
.
println
(
"\n############"
);
// to są "widoki", a nie kopie - zmiany w zbiorze pierwotnym są od razu widziane przez pobrane obiekty head/tail
System
.
out
.
println
(
"Dodaję elementy..."
);
imiona
.
add
(
"Julia"
);
imiona
.
add
(
"Ewelina"
);
System
.
out
.
println
(
imiona
);
System
.
out
.
println
(
head1
);
System
.
out
.
println
(
tail1
);
System
.
out
.
println
();
System
.
out
.
println
(
"head.add(Basia)"
);
head1
.
add
(
"Basia"
);
System
.
out
.
println
(
imiona
);
System
.
out
.
println
(
head1
);
System
.
out
.
println
(
tail1
);
System
.
out
.
println
();
System
.
out
.
println
(
"head.remove(Ewa)"
);
System
.
out
.
println
(
"head.remove(Magda)"
);
head1
.
remove
(
"Ewa"
);
head1
.
remove
(
"Zosia"
);
// nie ma takiego elementu, nie ma błędu
head1
.
remove
(
"Magda"
);
// nie usuwa, nie ma błędu
System
.
out
.
println
(
imiona
);
System
.
out
.
println
(
head1
);
System
.
out
.
println
(
tail1
);
System
.
out
.
println
();
System
.
out
.
println
(
"head.add(Zosia)"
);
head1
.
add
(
"Zosia"
);
// IllegalArgumentException: key out of range
System
.
out
.
println
(
imiona
);
System
.
out
.
println
(
head1
);
System
.
out
.
println
(
tail1
);
System
.
out
.
println
();
}
}
src/main/java/p22_kolekcje/b_set_map/Tree2.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
b_set_map
;
import
java.util.Arrays
;
import
java.util.NavigableSet
;
import
java.util.TreeSet
;
public
class
Tree2
{
public
static
void
main
(
String
[]
args
)
{
NavigableSet
<
String
>
imiona
=
new
TreeSet
<>(
Arrays
.
asList
(
"Ala"
,
"Ola"
,
"Ula"
,
"Ela"
,
"Ewa"
,
"Ania"
,
"Kasia"
,
"Aga"
,
"Iwona"
,
"Magda"
,
"Iza"
));
System
.
out
.
println
(
imiona
);
System
.
out
.
println
(
"first: "
+
imiona
.
first
());
System
.
out
.
println
(
"last : "
+
imiona
.
last
());
System
.
out
.
println
(
imiona
);
System
.
out
.
println
();
System
.
out
.
println
(
"pętla first / higher"
);
String
s
=
imiona
.
first
();
while
(
s
!=
null
)
{
System
.
out
.
println
(
s
);
s
=
imiona
.
higher
(
s
);
}
System
.
out
.
println
(
"========================"
);
System
.
out
.
println
(
"pętla last / lower"
);
s
=
imiona
.
last
();
while
(
s
!=
null
)
{
System
.
out
.
println
(
s
);
s
=
imiona
.
lower
(
s
);
}
System
.
out
.
println
(
"========================"
);
System
.
out
.
println
(
"pętla poll - usuwanie"
);
System
.
out
.
println
(
"size: "
+
imiona
.
size
());
while
((
s
=
imiona
.
pollFirst
())
!=
null
)
{
System
.
out
.
println
(
" # "
+
s
);
}
System
.
out
.
println
(
"size: "
+
imiona
.
size
());
// analogicznie pollLast()
}
}
src/main/java/p22_kolekcje/b_set_map/ZbiorDziwnieSortowany.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
b_set_map
;
import
java.math.BigDecimal
;
import
java.text.Collator
;
import
java.util.HashSet
;
import
java.util.Set
;
import
java.util.TreeSet
;
public
class
ZbiorDziwnieSortowany
{
public
static
void
main
(
String
[]
args
)
{
TreeSet
<
String
>
normalny
=
new
TreeSet
<>();
TreeSet
<
String
>
alfabetyczny
=
new
TreeSet
<>(
Collator
.
getInstance
());
// TreeSet<String> alfabetyczny = new TreeSet<>(Collator.getInstance(new Locale("fr", "FR")));
TreeSet
<
String
>
dziwny
=
new
TreeSet
<>((
a
,
b
)
->
a
.
length
()
-
b
.
length
());
normalny
.
add
(
"Ala"
);
alfabetyczny
.
add
(
"Ala"
);
dziwny
.
add
(
"Ala"
);
normalny
.
add
(
"Ącki"
);
alfabetyczny
.
add
(
"Ącki"
);
dziwny
.
add
(
"Ącki"
);
normalny
.
add
(
"Łucja"
);
alfabetyczny
.
add
(
"Łucja"
);
dziwny
.
add
(
"Łucja"
);
normalny
.
add
(
"Wiktor"
);
alfabetyczny
.
add
(
"Wiktor"
);
dziwny
.
add
(
"Wiktor"
);
normalny
.
add
(
"Hermenegilda"
);
alfabetyczny
.
add
(
"Hermenegilda"
);
dziwny
.
add
(
"Hermenegilda"
);
normalny
.
add
(
"Ola"
);
alfabetyczny
.
add
(
"Ola"
);
dziwny
.
add
(
"Ola"
);
// Ola jest traktowana jak == Ala, bo comparator zwraca 0 gdy napisy są tej samej długości
// TreeSet i TreeMap nie uzywają equals do sprawdzenia czy elementy sa równe, ograniczają się do użycia compare albo compareTo
System
.
out
.
println
(
normalny
);
System
.
out
.
println
(
alfabetyczny
);
System
.
out
.
println
(
dziwny
);
System
.
out
.
println
();
System
.
out
.
println
(
"Sprawa BigDecimal:"
);
BigDecimal
[]
liczby
=
{
new
BigDecimal
(
"123.00"
),
new
BigDecimal
(
"123.0"
),
new
BigDecimal
(
"123"
),
new
BigDecimal
(
"124"
),
};
Set
<
BigDecimal
>
t
=
new
TreeSet
<>();
Set
<
BigDecimal
>
h
=
new
HashSet
<>();
for
(
BigDecimal
b
:
liczby
)
{
t
.
add
(
b
);
h
.
add
(
b
);
}
System
.
out
.
println
(
"Tree: "
+
t
);
System
.
out
.
println
(
"Hash: "
+
h
);
}
}
src/main/java/p22_kolekcje/b_set_map/ZmianaKolejnosciWHaszSecie.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
b_set_map
;
import
java.util.Arrays
;
import
java.util.HashSet
;
public
class
ZmianaKolejnosciWHaszSecie
{
public
static
void
main
(
String
[]
args
)
{
HashSet
<
String
>
set
=
new
HashSet
<>();
set
.
addAll
(
Arrays
.
asList
(
"Ala"
,
"Ola"
,
"Ula"
,
"Ela"
,
"Ewa"
,
"Ania"
,
"Kasia"
,
"Aga"
,
"Iwona"
,
"Magda"
,
"Iza"
));
System
.
out
.
println
(
set
.
size
());
System
.
out
.
println
(
set
);
set
.
add
(
"Julia"
);
System
.
out
.
println
(
set
.
size
());
System
.
out
.
println
(
set
);
set
.
add
(
"Ewelina"
);
System
.
out
.
println
(
set
.
size
());
System
.
out
.
println
(
set
);
// for (String s : set) {
// int hash = s.hashCode();
// System.out.printf("%10s : hash = %10d , h%%16 = %2d , h%%32 = %2d\n",
// s, hash, hash%16, hash%32);
// }
}
}
src/main/java/p22_kolekcje/c_queue/KolejkaJakoStos.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
c_queue
;
import
java.util.ArrayDeque
;
public
class
KolejkaJakoStos
{
public
static
void
main
(
String
[]
args
)
{
ArrayDeque
<
Integer
>
stos
=
new
ArrayDeque
<>();
System
.
out
.
println
(
stos
);
for
(
int
i
=
1
;
i
<
10
;
i
++)
{
System
.
out
.
println
(
i
*
i
);
stos
.
push
(
i
*
i
);
}
System
.
out
.
println
();
System
.
out
.
println
(
stos
);
System
.
out
.
println
();
while
(!
stos
.
isEmpty
())
{
Integer
liczba
=
stos
.
pop
();
System
.
out
.
println
(
liczba
);
}
}
}
src/main/java/p22_kolekcje/c_queue/Kolejki.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
c_queue
;
import
java.util.ArrayDeque
;
import
java.util.PriorityQueue
;
import
java.util.Queue
;
public
class
Kolejki
{
public
static
void
main
(
String
[]
args
)
{
Queue
<
String
>
kolejka
;
// ewentualnie Deque<String>
String
elem
;
System
.
out
.
println
(
"Kolejka prosta:"
);
// FIFO
kolejka
=
new
ArrayDeque
<>();
// kolejka = new LinkedList<>();
kolejka
.
add
(
"ala"
);
kolejka
.
add
(
"ola"
);
kolejka
.
add
(
"ela"
);
kolejka
.
add
(
"ula"
);
System
.
out
.
println
(
"Cała: "
+
kolejka
);
System
.
out
.
println
(
"Dodaję aaa"
);
kolejka
.
add
(
"aaa"
);
System
.
out
.
println
(
kolejka
);
System
.
out
.
println
(
"Wyjmuję w pętli:"
);
while
((
elem
=
kolejka
.
poll
())
!=
null
)
{
System
.
out
.
println
(
elem
);
}
System
.
out
.
println
(
"\nKolejka priorytetowa:"
);
kolejka
=
new
PriorityQueue
<>();
kolejka
.
add
(
"ala"
);
kolejka
.
add
(
"ola"
);
kolejka
.
add
(
"ela"
);
kolejka
.
add
(
"ula"
);
System
.
out
.
println
(
"Cała: "
+
kolejka
);
System
.
out
.
println
(
"Dodaję aaa"
);
kolejka
.
add
(
"aaa"
);
System
.
out
.
println
(
kolejka
);
// jako pierwszy element w PriorityQueue występuje najmniejszy
System
.
out
.
println
(
"Wyjmuję w pętli:"
);
while
((
elem
=
kolejka
.
poll
())
!=
null
)
{
System
.
out
.
println
(
elem
);
}
}
}
src/main/java/p22_kolekcje/c_queue/Kolejki_Operacje.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
c_queue
;
import
java.util.ArrayDeque
;
import
java.util.Arrays
;
import
java.util.Deque
;
public
class
Kolejki_Operacje
{
public
static
void
main
(
String
[]
args
)
{
Deque
<
String
>
kolejka
=
new
ArrayDeque
<
String
>(
Arrays
.
asList
(
"Ala"
,
"Ula"
,
"Ola"
,
"Kasia"
));
System
.
out
.
println
(
kolejka
);
// odczyt bez usuwania, zwracają null jeśli kolejka jest pusta
System
.
out
.
println
(
"peek / peekFirst / peekLast"
);
System
.
out
.
println
(
kolejka
.
peek
());
System
.
out
.
println
(
kolejka
.
peekFirst
());
System
.
out
.
println
(
kolejka
.
peekLast
());
System
.
out
.
println
();
// odczyt bez usuwania, wyrzucają wyjątek jeśli kolejka jest pusta
System
.
out
.
println
(
"element / getFirst / getLast"
);
System
.
out
.
println
(
kolejka
.
element
());
System
.
out
.
println
(
kolejka
.
getFirst
());
System
.
out
.
println
(
kolejka
.
getLast
());
System
.
out
.
println
();
// dodawanie na końcu i na początku
kolejka
.
add
(
"Zosia"
);
kolejka
.
addLast
(
"Zuzia"
);
kolejka
.
addFirst
(
"Ania"
);
System
.
out
.
println
(
kolejka
);
kolejka
.
offer
(
"Zosia 2"
);
kolejka
.
offerLast
(
"Zuzia 2"
);
kolejka
.
offerFirst
(
"Ania 2"
);
System
.
out
.
println
(
kolejka
);
System
.
out
.
println
();
// usuwanie - poll zwracają null jeśli kolejka jest pusta
String
s
;
s
=
kolejka
.
poll
();
// pobiera i usuwa pierwszy element
System
.
out
.
println
(
s
);
s
=
kolejka
.
pollFirst
();
System
.
out
.
println
(
s
);
s
=
kolejka
.
pollLast
();
System
.
out
.
println
(
s
);
System
.
out
.
println
();
// usuwanie - remove wyrzucają wyjątek jeśli kolejka jest pusta
s
=
kolejka
.
remove
();
System
.
out
.
println
(
s
);
s
=
kolejka
.
removeFirst
();
System
.
out
.
println
(
s
);
s
=
kolejka
.
removeLast
();
System
.
out
.
println
(
s
);
System
.
out
.
println
();
kolejka
.
add
(
"Zosia"
);
kolejka
.
add
(
"Ola"
);
System
.
out
.
println
(
kolejka
);
// [Ola, Kasia, Zosia, Zuzia, Zosia, Ola]
boolean
b
;
b
=
kolejka
.
remove
(
"Ola"
);
// usuwa jedno wystąpienie, równoważne removeFirstOccurrence
System
.
out
.
println
(
kolejka
);
kolejka
.
removeLastOccurrence
(
"Zosia"
);
System
.
out
.
println
(
kolejka
);
}
}
src/main/java/p22_kolekcje/e_iterator/Iteratory.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
e_iterator
;
import
java.util.Iterator
;
import
java.util.LinkedList
;
import
java.util.List
;
public
class
Iteratory
{
// Kod jest napisany tak, jak pisało się w Javie 1.4
// Nie było generyków (trzeba rzutować)
// Nie było pętli for-each - trzeba używać iteratorów
public
static
void
main
(
String
[]
args
)
{
List
lista
=
new
LinkedList
();
lista
.
add
(
"ala"
);
lista
.
add
(
"ola"
);
lista
.
add
(
"ela"
);
lista
.
add
(
"ula"
);
System
.
out
.
println
(
"Na początku: "
+
lista
);
Iterator
it
=
lista
.
iterator
();
while
(
it
.
hasNext
())
{
String
element
=
(
String
)
it
.
next
();
System
.
out
.
println
(
element
);
if
(
"ela"
.
equals
(
element
))
{
it
.
remove
();
}
}
System
.
out
.
println
(
"Na koniec: "
+
lista
);
}
}
src/main/java/p22_kolekcje/e_iterator/IteratoryListowe.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
e_iterator
;
import
java.util.ListIterator
;
import
java.util.LinkedList
;
import
java.util.List
;
public
class
IteratoryListowe
{
// Iteratory wciąż mogą się przydać, najbardziej gdy używamy klasy LinkedList,
// bo w niej nie ma "random access" i właśnie za pomocą iteratora możemy
// przeglądać listę i ją modyfikować "w locie"
public
static
void
main
(
String
[]
args
)
{
List
<
String
>
lista
=
new
LinkedList
<>();
lista
.
add
(
"ala"
);
lista
.
add
(
"ola"
);
lista
.
add
(
"ela"
);
lista
.
add
(
"ula"
);
System
.
out
.
println
(
"Na początku: "
+
lista
);
ListIterator
<
String
>
it
=
lista
.
listIterator
();
while
(
it
.
hasNext
())
{
String
element
=
it
.
next
();
System
.
out
.
println
(
element
);
if
(
"ela"
.
equals
(
element
))
{
it
.
add
(
"maja"
);
// za element bieżący, ale nowowstawione elementy nie będą odwiedzone przez ten iterator
it
.
add
(
"gucio"
);
}
else
if
(
"ola"
.
equals
(
element
))
{
it
.
set
(
"Aleksandra"
);
}
else
if
(
"ula"
.
equals
(
element
))
{
it
.
remove
();
}
}
System
.
out
.
println
();
it
=
lista
.
listIterator
(
3
);
while
(
it
.
hasPrevious
())
{
System
.
out
.
println
(
it
.
previousIndex
()
+
" "
+
it
.
previous
());
}
System
.
out
.
println
(
"Na koniec: "
+
lista
);
}
}
src/main/java/p22_kolekcje/e_iterator/Konkurencja1.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
e_iterator
;
import
java.util.ArrayList
;
import
java.util.Iterator
;
import
java.util.List
;
public
class
Konkurencja1
{
public
static
void
main
(
String
[]
args
)
{
List
<
String
>
lista
=
new
ArrayList
<>();
lista
.
add
(
"ala"
);
lista
.
add
(
"ola"
);
lista
.
add
(
"ela"
);
lista
.
add
(
"ula"
);
System
.
out
.
println
(
"Na początku: "
+
lista
);
// można używać wielu iteratorów do odczytu kolekcji - to jest OK
Iterator
<
String
>
it1
=
lista
.
iterator
();
while
(
it1
.
hasNext
())
{
String
element
=
it1
.
next
();
System
.
out
.
print
(
element
);
Iterator
<
String
>
it2
=
lista
.
iterator
();
while
(
it2
.
hasNext
())
{
System
.
out
.
print
(
" "
+
it2
.
next
().
length
());
}
System
.
out
.
println
();
}
}
}
src/main/java/p22_kolekcje/e_iterator/Konkurencja2.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
e_iterator
;
import
java.util.ArrayList
;
import
java.util.Iterator
;
import
java.util.List
;
public
class
Konkurencja2
{
public
static
void
main
(
String
[]
args
)
{
List
<
String
>
lista
=
new
ArrayList
<>();
lista
.
add
(
"ala"
);
lista
.
add
(
"ola"
);
lista
.
add
(
"ela"
);
lista
.
add
(
"ula"
);
System
.
out
.
println
(
"Na początku: "
+
lista
);
Iterator
<
String
>
it1
=
lista
.
iterator
();
while
(
it1
.
hasNext
())
{
String
element
=
it1
.
next
();
System
.
out
.
print
(
element
);
Iterator
<
String
>
it2
=
lista
.
iterator
();
while
(
it2
.
hasNext
())
{
String
elem2
=
it2
.
next
();
System
.
out
.
print
(
" "
+
elem2
.
length
());
if
(
elem2
.
charAt
(
0
)
==
'o'
)
{
it2
.
remove
();
}
}
System
.
out
.
println
();
}
// Jesli uzywamy iterator (it1) a w tym czasie w inny sposób zmienimy kolekcję
// (np. innym iteratorem), to kolejna operacja na tym pierwszym iteratorze skończy sie wjątkiem ConcurrectModificationEx
}
}
src/main/java/p22_kolekcje/e_iterator/Konkurencja3.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
e_iterator
;
import
java.util.ArrayList
;
import
java.util.Iterator
;
import
java.util.List
;
public
class
Konkurencja3
{
public
static
void
main
(
String
[]
args
)
{
List
<
String
>
lista
=
new
ArrayList
<>();
lista
.
add
(
"ala"
);
lista
.
add
(
"ola"
);
lista
.
add
(
"ela"
);
lista
.
add
(
"ula"
);
System
.
out
.
println
(
"Na początku: "
+
lista
);
// wyjątek pojawia się także gdy modyfikujemy listę metodami add/remove
// w trakcie przeglądania jej jakimś iteratorem
Iterator
<
String
>
it
=
lista
.
iterator
();
while
(
it
.
hasNext
())
{
String
element
=
it
.
next
();
System
.
out
.
println
(
element
);
if
(
element
.
charAt
(
0
)
==
'o'
)
{
// lista.set(3, "Agata"); // to nie spowodowało błędu
lista
.
remove
(
2
);
// to psuje działanie pętli for-each
// lista.add("ewa"); // to też psuje
System
.
out
.
println
(
"już usunąłem"
);
//break;
}
}
System
.
out
.
println
(
"koniec"
);
}
}
src/main/java/p22_kolekcje/e_iterator/Konkurencja4.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
e_iterator
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
Konkurencja4
{
public
static
void
main
(
String
[]
args
)
{
List
<
String
>
lista
=
new
ArrayList
<>();
lista
.
add
(
"ala"
);
lista
.
add
(
"ola"
);
lista
.
add
(
"ela"
);
lista
.
add
(
"ula"
);
System
.
out
.
println
(
"Na początku: "
+
lista
);
// wyjątek pojawia się także gdy modyfikujemy listę metodami add/remove
// w trakcie przeglądania jej jakimś iteratorem
// pętla for-each ma w sobie zaszyty niejawny iterator
for
(
String
element
:
lista
)
{
System
.
out
.
println
(
element
);
if
(
element
.
charAt
(
0
)
==
'o'
)
{
// lista.set(3, "Agata"); // to nie spowodowało błędu
lista
.
remove
(
2
);
// to psuje działanie pętli for-each
// lista.add("ewa"); // to też psuje
System
.
out
.
println
(
"już usunąłem"
);
}
}
}
}
src/main/java/p22_kolekcje/e_iterator/Konkurencja6.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
e_iterator
;
import
java.util.ArrayList
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.ListIterator
;
public
class
Konkurencja6
{
public
static
void
main
(
String
[]
args
)
{
List
<
String
>
lista
=
new
ArrayList
<>();
lista
.
add
(
"Ala"
);
lista
.
add
(
"Ola"
);
lista
.
add
(
"Ela"
);
lista
.
add
(
"Ula"
);
System
.
out
.
println
(
lista
);
String
a
,
b
,
c
;
Iterator
<
String
>
it1
=
lista
.
iterator
();
a
=
it1
.
next
();
System
.
out
.
println
(
"it1 jest na pozycji "
+
a
);
ListIterator
<
String
>
it2
=
lista
.
listIterator
();
it2
.
next
();
b
=
it2
.
next
();
System
.
out
.
println
(
"it2 jest na pozycji "
+
b
);
a
=
it1
.
next
();
a
=
it1
.
next
();
System
.
out
.
println
(
"it1 jest na pozycji "
+
a
);
// dopóki tylko odczytujemy elementy kolekcji, można używać wielu iteratorów jednocześnie
System
.
out
.
println
();
it2
.
add
(
"Jola"
);
// it2.remove();
// lista.add("Fasola");
System
.
out
.
println
(
"dodałem nowy element za pomocą it2"
);
System
.
out
.
println
(
lista
);
try
{
// Kolekcja została zmodyfikowana nie poprzez iterator it1.
// Teraz próba wykonania operacji poprzed it1 kończy się wyjątkiem.
System
.
out
.
println
(
"przesuwam it1"
);
a
=
it1
.
next
();
System
.
out
.
println
(
"it1 jest na pozycji "
+
a
);
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"Wyjątek "
+
e
);
}
}
}
src/main/java/p22_kolekcje/e_iterator/Konkurencja7a.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
e_iterator
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
Konkurencja7a
{
public
static
void
main
(
String
[]
args
)
{
List
<
String
>
lista
=
new
ArrayList
<>();
lista
.
add
(
"Ala"
);
lista
.
add
(
"Ola"
);
lista
.
add
(
"Ela"
);
lista
.
add
(
"Ula"
);
System
.
out
.
println
(
lista
);
for
(
String
s
:
lista
)
{
System
.
out
.
println
(
s
);
if
(
s
.
equals
(
"Ela"
))
{
lista
.
add
(
"Nowy"
);
// EXN
}
}
}
}
src/main/java/p22_kolekcje/e_iterator/Konkurencja7b.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
e_iterator
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
Konkurencja7b
{
public
static
void
main
(
String
[]
args
)
{
List
<
String
>
lista
=
new
ArrayList
<>();
lista
.
add
(
"Ala"
);
lista
.
add
(
"Ola"
);
lista
.
add
(
"Ela"
);
lista
.
add
(
"Ula"
);
System
.
out
.
println
(
lista
);
for
(
String
s
:
lista
)
{
System
.
out
.
println
(
s
);
if
(
s
.
equals
(
"Ela"
))
{
lista
.
set
(
3
,
"Urszula"
);
// nie powoduje błędu
}
}
}
}
src/main/java/p22_kolekcje/s_sortowanie/KomparatorDlugosciNapisow.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
s_sortowanie
;
import
java.util.Comparator
;
public
class
KomparatorDlugosciNapisow
implements
Comparator
<
String
>
{
public
int
compare
(
String
s1
,
String
s2
)
{
/* Jeśli zwracam <0 to znaczy że s1 uważam za mniejsze.
* Jeśli zwracam >0 to znaczy że s1 uważam za większe.
* Jeśli zwracam 0 to znaczy, że są równe.
*/
return
s1
.
length
()
-
s2
.
length
();
}
}
src/main/java/p22_kolekcje/s_sortowanie/Sortowanie1.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
s_sortowanie
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.List
;
public
class
Sortowanie1
{
public
static
void
main
(
String
[]
args
)
{
String
[]
imiona
=
{
"Ala"
,
"Ola"
,
"Iwona"
,
"Magdalena"
,
"Joanna"
,
"Anna"
,
"Teresa"
,
"Żaneta"
,
"Ęcki"
,
"Ącki"
,
"Agnieszka"
,
"ala"
,
"Łucja"
,
"Julia"
,
"Julitta"
,
"Zuzanna"
};
List
<
String
>
lista
=
new
ArrayList
<>(
Arrays
.
asList
(
imiona
));
System
.
out
.
println
(
lista
);
// dostępne "od początku" kolekcji w Javie
System
.
out
.
println
(
"\nCollections.sort"
);
Collections
.
sort
(
lista
);
System
.
out
.
println
(
lista
);
// Domyślnie porównywanie Stringów bazuje na kodach Unicode poszczególnych znaków
System
.
out
.
println
(
"\nCollections.shuffle"
);
Collections
.
shuffle
(
lista
);
System
.
out
.
println
(
lista
);
// Od Javy 8 można też tak:
System
.
out
.
println
(
"\nlista.sort(null)"
);
lista
.
sort
(
null
);
System
.
out
.
println
(
lista
);
}
}
src/main/java/p22_kolekcje/s_sortowanie/Sortowanie2.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
s_sortowanie
;
import
java.text.Collator
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.Comparator
;
import
java.util.List
;
import
java.util.Locale
;
public
class
Sortowanie2
{
public
static
void
main
(
String
[]
args
)
{
String
[]
imiona
=
{
"Ala"
,
"Ola"
,
"Iwona"
,
"Magdalena"
,
"Joanna"
,
"Anna"
,
"Teresa"
,
"Żaneta"
,
"Ęcki"
,
"Ącki"
,
"ala"
,
"Agnieszka"
,
"Łucja"
,
"Julia"
,
"Julitta"
,
"Ela"
,
"Zuzanna"
};
List
<
String
>
lista
=
new
ArrayList
<>(
Arrays
.
asList
(
imiona
));
System
.
out
.
println
(
lista
);
// Pierwszy sposób utworzenia komparatora: oddzielna klasa
System
.
out
.
println
(
"\nlista.sort( komparator )"
);
// Collections.shuffle(lista);
KomparatorDlugosciNapisow
komparator
=
new
KomparatorDlugosciNapisow
();
lista
.
sort
(
komparator
);
System
.
out
.
println
(
lista
);
System
.
out
.
println
(
"\nCollections.sort( lista, komparator )"
);
Collections
.
sort
(
lista
,
komparator
);
System
.
out
.
println
(
lista
);
// Drugi sposób utworzenia komparatora: klasa anonimowa
// Składnia dostepna od początków Javy
System
.
out
.
println
(
"\nlista.sort( klasa anonimowa )"
);
lista
.
sort
(
new
Comparator
<
String
>()
{
public
int
compare
(
String
s1
,
String
s2
)
{
return
s2
.
length
()
-
s1
.
length
();
}
});
System
.
out
.
println
(
lista
);
// Trzeci sposób utworzenia komparatora:
// wyrażenie lambda (od Javy 8)
System
.
out
.
println
(
"\nlista.sort( lambda )"
);
lista
.
sort
((
s1
,
s2
)
->
s1
.
length
()
-
s2
.
length
());
System
.
out
.
println
(
lista
);
System
.
out
.
println
(
"\nCollator"
);
lista
.
sort
(
Collator
.
getInstance
());
// wg bieżących ustawień językowych w systemie
System
.
out
.
println
(
lista
);
lista
.
sort
(
Collator
.
getInstance
(
Locale
.
CANADA_FRENCH
));
System
.
out
.
println
(
lista
);
lista
.
sort
(
Collator
.
getInstance
(
new
Locale
(
"pl"
,
"PL"
)));
System
.
out
.
println
(
lista
);
}
}
src/main/java/p22_kolekcje/s_sortowanie/Sortowanie3.java
0 → 100644
View file @
06aa1c14
package
p22_kolekcje
.
s_sortowanie
;
import
java.text.Collator
;
import
java.util.Arrays
;
public
class
Sortowanie3
{
public
static
void
main
(
String
[]
args
)
{
String
[]
imiona
=
{
"Ala"
,
"Ola"
,
"Iwona"
,
"Magdalena"
,
"Joanna"
,
"Anna"
,
"Teresa"
,
"Żaneta"
,
"Ęcki"
,
"Ącki"
,
"Agnieszka"
,
"ala"
,
"Łucja"
,
"Julia"
,
"Julitta"
,
"Zuzanna"
};
System
.
out
.
println
(
"Sortowanie tablicy"
);
System
.
out
.
println
(
Arrays
.
toString
(
imiona
));
Arrays
.
sort
(
imiona
);
System
.
out
.
println
(
Arrays
.
toString
(
imiona
));
Arrays
.
sort
(
imiona
,
Collator
.
getInstance
());
// jako Comparator
System
.
out
.
println
(
Arrays
.
toString
(
imiona
));
Arrays
.
sort
(
imiona
,
(
s1
,
s2
)
->
s1
.
length
()
-
s2
.
length
());
System
.
out
.
println
(
Arrays
.
toString
(
imiona
));
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment