Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
2
20231104-KursPodstawowyALX
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
20231104-KursPodstawowyALX
Commits
1dd7de8c
Commit
1dd7de8c
authored
Jan 06, 2024
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gotowe przykłady dot. kolekcji
parent
c6cd4597
Hide whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
1303 additions
and
0 deletions
+1303
-0
DeklaracjeGeneryczne.java
src/main/java/p12_kolekcje/a_list/DeklaracjeGeneryczne.java
+37
-0
ListaLiczb.java
src/main/java/p12_kolekcje/a_list/ListaLiczb.java
+39
-0
Listy.java
src/main/java/p12_kolekcje/a_list/Listy.java
+88
-0
ListyAll.java
src/main/java/p12_kolekcje/a_list/ListyAll.java
+57
-0
NoweOperacjeList.java
src/main/java/p12_kolekcje/a_list/NoweOperacjeList.java
+53
-0
PorownanieSzybkosciList.java
...ain/java/p12_kolekcje/a_list/PorownanieSzybkosciList.java
+72
-0
ListyIZbiory.java
src/main/java/p12_kolekcje/b_set_map/ListyIZbiory.java
+38
-0
NoweOperacjeMap.java
src/main/java/p12_kolekcje/b_set_map/NoweOperacjeMap.java
+44
-0
Slowniki.java
src/main/java/p12_kolekcje/b_set_map/Slowniki.java
+65
-0
Tree1.java
src/main/java/p12_kolekcje/b_set_map/Tree1.java
+79
-0
Tree2.java
src/main/java/p12_kolekcje/b_set_map/Tree2.java
+49
-0
ZbiorDziwnieSortowany.java
...in/java/p12_kolekcje/b_set_map/ZbiorDziwnieSortowany.java
+68
-0
ZmianaKolejnosciWHaszSecie.java
...va/p12_kolekcje/b_set_map/ZmianaKolejnosciWHaszSecie.java
+33
-0
KolejkaJakoStos.java
src/main/java/p12_kolekcje/c_queue/KolejkaJakoStos.java
+25
-0
Kolejki.java
src/main/java/p12_kolekcje/c_queue/Kolejki.java
+49
-0
Kolejki_Operacje.java
src/main/java/p12_kolekcje/c_queue/Kolejki_Operacje.java
+74
-0
Iteratory.java
src/main/java/p12_kolekcje/e_iterator/Iteratory.java
+32
-0
IteratoryListowe.java
src/main/java/p12_kolekcje/e_iterator/IteratoryListowe.java
+43
-0
Konkurencja1.java
src/main/java/p12_kolekcje/e_iterator/Konkurencja1.java
+31
-0
Konkurencja2.java
src/main/java/p12_kolekcje/e_iterator/Konkurencja2.java
+36
-0
Konkurencja3.java
src/main/java/p12_kolekcje/e_iterator/Konkurencja3.java
+36
-0
Konkurencja4.java
src/main/java/p12_kolekcje/e_iterator/Konkurencja4.java
+31
-0
Konkurencja6.java
src/main/java/p12_kolekcje/e_iterator/Konkurencja6.java
+55
-0
Konkurencja7a.java
src/main/java/p12_kolekcje/e_iterator/Konkurencja7a.java
+24
-0
Konkurencja7b.java
src/main/java/p12_kolekcje/e_iterator/Konkurencja7b.java
+24
-0
KomparatorDlugosciNapisow.java
.../p12_kolekcje/s_sortowanie/KomparatorDlugosciNapisow.java
+13
-0
Sortowanie1.java
src/main/java/p12_kolekcje/s_sortowanie/Sortowanie1.java
+32
-0
Sortowanie2.java
src/main/java/p12_kolekcje/s_sortowanie/Sortowanie2.java
+55
-0
Sortowanie3.java
src/main/java/p12_kolekcje/s_sortowanie/Sortowanie3.java
+21
-0
No files found.
src/main/java/p12_kolekcje/a_list/DeklaracjeGeneryczne.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/a_list/ListaLiczb.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/a_list/Listy.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/a_list/ListyAll.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/a_list/NoweOperacjeList.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/a_list/PorownanieSzybkosciList.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/b_set_map/ListyIZbiory.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/b_set_map/NoweOperacjeMap.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/b_set_map/Slowniki.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/b_set_map/Tree1.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/b_set_map/Tree2.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/b_set_map/ZbiorDziwnieSortowany.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/b_set_map/ZmianaKolejnosciWHaszSecie.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/c_queue/KolejkaJakoStos.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/c_queue/Kolejki.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/c_queue/Kolejki_Operacje.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/e_iterator/Iteratory.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/e_iterator/IteratoryListowe.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/e_iterator/Konkurencja1.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/e_iterator/Konkurencja2.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/e_iterator/Konkurencja3.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/e_iterator/Konkurencja4.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/e_iterator/Konkurencja6.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/e_iterator/Konkurencja7a.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/e_iterator/Konkurencja7b.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/s_sortowanie/KomparatorDlugosciNapisow.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/s_sortowanie/Sortowanie1.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/s_sortowanie/Sortowanie2.java
0 → 100644
View file @
1dd7de8c
package
p12_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/p12_kolekcje/s_sortowanie/Sortowanie3.java
0 → 100644
View file @
1dd7de8c
package
p12_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