Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
java_dzienna_15_09
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
java_dzienna_15_09
Commits
dfe90ee5
Commit
dfe90ee5
authored
Sep 16, 2022
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Przykłady dla większego pliku i czytanie strumieniem prosto z pliku
parent
61259230
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
139 additions
and
10 deletions
+139
-10
.gitignore
PC22-ZaawansowaneElementyJavy/.gitignore
+2
-0
PrzygotujDuzyPlik.java
...aneElementyJavy/src/main/java/emps/PrzygotujDuzyPlik.java
+36
-0
F1_WypiszZeStrumienia.java
...rc/main/java/emps/strumieniowo/F1_WypiszZeStrumienia.java
+11
-0
F4_SredniaJob.java
...tyJavy/src/main/java/emps/strumieniowo/F4_SredniaJob.java
+24
-0
Grupowanie2_CzystoStrumieniowo.java
...ava/emps/strumieniowo/Grupowanie2_CzystoStrumieniowo.java
+16
-0
ObslugaCSV.java
...mentyJavy/src/main/java/emps/strumieniowo/ObslugaCSV.java
+36
-4
P2_FiltrowanieDoListyString.java
...n/java/emps/strumieniowo/P2_FiltrowanieDoListyString.java
+1
-1
P4_SredniaJob_v2.java
...avy/src/main/java/emps/strumieniowo/P4_SredniaJob_v2.java
+2
-2
P6_UnikalneMiasta_Set.java
...rc/main/java/emps/strumieniowo/P6_UnikalneMiasta_Set.java
+11
-3
No files found.
PC22-ZaawansowaneElementyJavy/.gitignore
View file @
dfe90ee5
...
...
@@ -6,3 +6,5 @@
/*.iml
/.idea/
/emps_big.csv
PC22-ZaawansowaneElementyJavy/src/main/java/emps/PrzygotujDuzyPlik.java
0 → 100644
View file @
dfe90ee5
package
emps
;
import
java.io.BufferedReader
;
import
java.io.FileReader
;
import
java.io.IOException
;
import
java.io.PrintWriter
;
public
class
PrzygotujDuzyPlik
{
public
static
void
main
(
String
[]
args
)
{
final
String
zrodlo
=
"emps.csv"
;
final
String
cel
=
"emps_big.csv"
;
final
int
N
=
100_000
;
try
(
PrintWriter
out
=
new
PrintWriter
(
cel
))
{
for
(
int
i
=
0
;
i
<
N
;
i
++)
{
System
.
out
.
print
(
i
+
" "
);
try
(
BufferedReader
in
=
new
BufferedReader
(
new
FileReader
(
zrodlo
)))
{
String
pierwszaLinia
=
in
.
readLine
();
if
(
i
==
0
)
{
out
.
println
(
pierwszaLinia
);
}
String
linia
;
while
((
linia
=
in
.
readLine
())
!=
null
)
{
out
.
println
(
linia
);
}
}
}
System
.
out
.
println
();
System
.
out
.
println
(
"Gotowe"
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
}
PC22-ZaawansowaneElementyJavy/src/main/java/emps/strumieniowo/F1_WypiszZeStrumienia.java
0 → 100644
View file @
dfe90ee5
package
emps
.
strumieniowo
;
public
class
F1_WypiszZeStrumienia
{
public
static
void
main
(
String
[]
args
)
{
ObslugaCSV
.
wczytajStrumien
(
"emps.csv"
)
.
forEachOrdered
(
emp
->
System
.
out
.
println
(
emp
.
getFirstName
()
+
" "
+
emp
.
getLastName
()));
}
}
PC22-ZaawansowaneElementyJavy/src/main/java/emps/strumieniowo/F4_SredniaJob.java
0 → 100644
View file @
dfe90ee5
package
emps
.
strumieniowo
;
import
java.util.OptionalDouble
;
import
javax.swing.JOptionPane
;
public
class
F4_SredniaJob
{
public
static
void
main
(
String
[]
args
)
{
String
job
=
JOptionPane
.
showInputDialog
(
"Podaj nazwę stanowiska, np. Programmer"
);
// spróbuj emps_big po wygenerowaniu pliku u siebie
OptionalDouble
srednia
=
ObslugaCSV
.
wczytajStrumien
(
"emps.csv"
)
.
filter
(
emp
->
emp
.
getJobTitle
().
equalsIgnoreCase
(
job
))
.
mapToInt
(
Employee:
:
getSalary
)
.
average
();
if
(
srednia
.
isPresent
())
{
JOptionPane
.
showMessageDialog
(
null
,
"Średnia programistów: "
+
srednia
.
getAsDouble
());
}
else
{
JOptionPane
.
showMessageDialog
(
null
,
"Nie ma żadnego pracownika na stanowisku "
+
job
,
"Brak danych"
,
JOptionPane
.
WARNING_MESSAGE
);
}
}
}
PC22-ZaawansowaneElementyJavy/src/main/java/emps/strumieniowo/Grupowanie2_CzystoStrumieniowo.java
0 → 100644
View file @
dfe90ee5
package
emps
.
strumieniowo
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
public
class
Grupowanie2_CzystoStrumieniowo
{
public
static
void
main
(
String
[]
args
)
{
Map
<
String
,
Double
>
srednie
=
ObslugaCSV
.
wczytajStrumien
(
"emps.csv"
)
.
collect
(
Collectors
.
groupingBy
(
Employee:
:
getJobTitle
,
Collectors
.
averagingInt
(
Employee:
:
getSalary
)));
srednie
.
forEach
((
job
,
avg
)
->
System
.
out
.
printf
(
"%32s → %8.2f\n"
,
job
,
avg
));
}
}
PC22-ZaawansowaneElementyJavy/src/main/java/emps/strumieniowo/ObslugaCSV.java
View file @
dfe90ee5
...
...
@@ -2,11 +2,16 @@ package emps.strumieniowo;
import
java.io.File
;
import
java.io.FileNotFoundException
;
import
java.io.IOException
;
import
java.io.PrintWriter
;
import
java.nio.file.Files
;
import
java.nio.file.Path
;
import
java.nio.file.Paths
;
import
java.time.LocalDate
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Scanner
;
import
java.util.stream.Stream
;
public
class
ObslugaCSV
{
private
static
final
String
NAGLOWEK
=
"employee_id;first_name;last_name;job_title;salary;hire_date;department_name;address;postal_code;city;country"
;
...
...
@@ -23,10 +28,7 @@ public class ObslugaCSV {
while
(
scanner
.
hasNextLine
())
{
String
linia
=
scanner
.
nextLine
();
String
[]
t
=
linia
.
split
(
SEP
,
11
);
Employee
emp
=
new
Employee
(
Integer
.
parseInt
(
t
[
0
]),
t
[
1
],
t
[
2
],
t
[
3
],
Integer
.
parseInt
(
t
[
4
]),
LocalDate
.
parse
(
t
[
5
]),
t
[
6
],
t
[
7
],
t
[
8
],
t
[
9
],
t
[
10
]);
Employee
emp
=
wczytajWiersz
(
linia
);
emps
.
add
(
emp
);
}
}
catch
(
FileNotFoundException
e
)
{
...
...
@@ -40,6 +42,36 @@ public class ObslugaCSV {
return
wczytaj
(
new
File
(
sciezka
));
}
public
static
Stream
<
Employee
>
wczytajStrumien
(
Path
path
)
{
// Ta metoda zwraca w wyniku "otwarty strumień", z którego będzie można pobierać kolejne obiekty Employee.
// Dzięki takiemu podejściu dane wszystkich pracowników nie muszą być wczytywane na raz do pamięci (jak w przypadku listy),
// tylko mogą być przetwarzane jedne po drugim.
try
{
return
Files
.
lines
(
path
)
.
skip
(
1
)
//.parallel()
.
map
(
ObslugaCSV:
:
wczytajWiersz
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
return
Stream
.
empty
();
}
}
public
static
Stream
<
Employee
>
wczytajStrumien
(
String
sciezka
)
{
return
wczytajStrumien
(
Paths
.
get
(
sciezka
));
}
public
static
Stream
<
Employee
>
wczytajStrumien
(
File
plik
)
{
return
wczytajStrumien
(
plik
.
toPath
());
}
private
static
Employee
wczytajWiersz
(
String
linia
)
{
String
[]
t
=
linia
.
split
(
SEP
,
11
);
return
new
Employee
(
Integer
.
parseInt
(
t
[
0
]),
t
[
1
],
t
[
2
],
t
[
3
],
Integer
.
parseInt
(
t
[
4
]),
LocalDate
.
parse
(
t
[
5
]),
t
[
6
],
t
[
7
],
t
[
8
],
t
[
9
],
t
[
10
]);
}
public
static
void
zapisz
(
List
<
Employee
>
lista
,
File
plik
)
{
try
(
PrintWriter
out
=
new
PrintWriter
(
plik
))
{
out
.
println
(
NAGLOWEK
);
...
...
PC22-ZaawansowaneElementyJavy/src/main/java/emps/strumieniowo/P2_FiltrowanieDoListyString.java
View file @
dfe90ee5
...
...
@@ -10,7 +10,7 @@ public class P2_FiltrowanieDoListyString {
List
<
String
>
wyniki
=
emps
.
stream
()
.
filter
(
emp
->
emp
.
getSalary
()
>=
10_000
)
.
map
(
emp
->
String
.
format
(
"Pracownik %s %s (%s) zarabia %
.2f
USD"
,
.
map
(
emp
->
String
.
format
(
"Pracownik %s %s (%s) zarabia %
d
USD"
,
emp
.
getFirstName
(),
emp
.
getLastName
(),
emp
.
getJobTitle
(),
emp
.
getSalary
()))
.
collect
(
Collectors
.
toList
());
...
...
PC22-ZaawansowaneElementyJavy/src/main/java/emps/strumieniowo/P4_SredniaJob_v2.java
View file @
dfe90ee5
...
...
@@ -8,10 +8,10 @@ import javax.swing.JOptionPane;
public
class
P4_SredniaJob_v2
{
public
static
void
main
(
String
[]
args
)
{
List
<
Employee
>
emps
=
ObslugaCSV
.
wczytaj
(
"emps.csv"
);
String
job
=
JOptionPane
.
showInputDialog
(
"Podaj nazwę stanowiska, np. Programmer"
);
List
<
Employee
>
emps
=
ObslugaCSV
.
wczytaj
(
"emps.csv"
);
OptionalDouble
srednia
=
emps
.
stream
()
.
filter
(
emp
->
emp
.
getJobTitle
().
equalsIgnoreCase
(
job
))
.
mapToInt
(
Employee:
:
getSalary
)
...
...
PC22-ZaawansowaneElementyJavy/src/main/java/emps/strumieniowo/P6_UnikalneMiasta_Set.java
View file @
dfe90ee5
package
emps
.
strumieniowo
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.TreeSet
;
import
java.util.stream.Collectors
;
public
class
P6_UnikalneMiasta_Set
{
public
static
void
main
(
String
[]
args
)
{
List
<
Employee
>
emps
=
ObslugaCSV
.
wczytaj
(
"emps.csv"
);
emps
.
stream
()
Collection
<
String
>
miasta
=
emps
.
stream
()
.
map
(
Employee:
:
getCity
)
.
distinct
()
.
forEach
(
System
.
out
::
println
);
.
collect
(
Collectors
.
toSet
());
// .collect(Collectors.toList());
// .collect(Collectors.toCollection(TreeSet::new));
System
.
out
.
println
(
"Miasta: "
+
miasta
);
System
.
out
.
println
(
"Typ kolekcji: "
+
miasta
.
getClass
().
getName
());
}
}
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