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
a0a39dba
Commit
a0a39dba
authored
Jan 27, 2024
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
liczenie słów - wersje stream
parent
f631e7d3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
73 additions
and
5 deletions
+73
-5
PoliczWszystkieSlowa_v3.java
...n/java/domowe/r4/pan_tadeusz/PoliczWszystkieSlowa_v3.java
+6
-5
PoliczWszystkieSlowa_v4.java
...n/java/domowe/r4/pan_tadeusz/PoliczWszystkieSlowa_v4.java
+35
-0
PoliczWszystkieSlowa_v5.java
...n/java/domowe/r4/pan_tadeusz/PoliczWszystkieSlowa_v5.java
+32
-0
No files found.
src/main/java/domowe/r4/pan_tadeusz/PoliczWszystkieSlowa_v3.java
View file @
a0a39dba
...
...
@@ -2,18 +2,19 @@ package domowe.r4.pan_tadeusz;
import
java.io.File
;
import
java.io.FileNotFoundException
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
import
java.util.Scanner
;
import
java.util.TreeMap
;
public
class
PoliczWszystkieSlowa_v3
{
// W tej wersji stosuję nowe (Java 8) "funkcyjne" operacje:
// - forEachRemaining, która zastpuje nam pętlę while i w inny sposób pozwala przejść przez słowa
// - merge, która aktualizuje zawartość słownika
// - wypisywanie wyników też za pomocą funkcyjnego forEach
// W tej wersji nie są jeszcze używane strumienie.
public
static
void
main
(
String
[]
args
)
{
Map
<
String
,
Integer
>
slownik
=
new
Tree
Map
<>();
Map
<
String
,
Integer
>
slownik
=
new
LinkedHash
Map
<>();
try
(
Scanner
scanner
=
new
Scanner
(
new
File
(
"pliki/pan_tadeusz.txt"
)))
{
scanner
.
useDelimiter
(
"[^\\p{L}\\d]+"
);
...
...
@@ -22,9 +23,9 @@ public class PoliczWszystkieSlowa_v3 {
e
.
printStackTrace
();
}
for
(
Map
.
Entry
<
String
,
Integer
>
entry
:
slownik
.
entrySet
())
{
System
.
out
.
println
(
entry
.
getKey
()
+
" → "
+
entry
.
getValue
()
);
}
slownik
.
forEach
((
k
,
v
)
->
{
System
.
out
.
println
(
k
+
" → "
+
v
);
}
);
}
}
src/main/java/domowe/r4/pan_tadeusz/PoliczWszystkieSlowa_v4.java
0 → 100644
View file @
a0a39dba
package
domowe
.
r4
.
pan_tadeusz
;
import
java.io.File
;
import
java.io.FileNotFoundException
;
import
java.util.Map
;
import
java.util.Scanner
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
public
class
PoliczWszystkieSlowa_v4
{
public
static
void
main
(
String
[]
args
)
{
try
(
Scanner
scanner
=
new
Scanner
(
new
File
(
"pliki/pan_tadeusz.txt"
)))
{
scanner
.
useDelimiter
(
"[^\\p{L}\\d]+"
);
// Strumień wszystkich słów jest dostępny jako "tokens()".
// Gdybyśmy mieli listę Stringów i napisali lista.stream()
// to właśnie dałoby to analogiczny efekt, jak scanner.tokens()
// scanner.tokens().forEach(System.out::println);
Map
<
String
,
Long
>
slownik
=
scanner
.
tokens
()
.
collect
(
Collectors
.
groupingBy
(
Function
.
identity
(),
Collectors
.
counting
()));
// zapisałem wynik grupowania do zmiennej, aby pokazać, żde wychodzi własnie taki słownik, jak wcześniej
slownik
.
forEach
((
k
,
v
)
->
{
System
.
out
.
println
(
k
+
" → "
+
v
);
});
}
catch
(
FileNotFoundException
e
)
{
e
.
printStackTrace
();
}
}
}
src/main/java/domowe/r4/pan_tadeusz/PoliczWszystkieSlowa_v5.java
0 → 100644
View file @
a0a39dba
package
domowe
.
r4
.
pan_tadeusz
;
import
java.io.File
;
import
java.io.FileNotFoundException
;
import
java.util.Map
;
import
java.util.Scanner
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
public
class
PoliczWszystkieSlowa_v5
{
public
static
void
main
(
String
[]
args
)
{
try
(
Scanner
scanner
=
new
Scanner
(
new
File
(
"pliki/pan_tadeusz.txt"
)))
{
scanner
.
useDelimiter
(
"[^\\p{L}\\d]+"
);
// W tej wersji będzie tylko jeden "pipeline", w którym pośrednio pojawi się słownik,
// ale od razu na nim wykonamy dalsze kroki.
scanner
.
tokens
()
.
map
(
String:
:
toLowerCase
)
.
collect
(
Collectors
.
groupingBy
(
Function
.
identity
(),
Collectors
.
counting
()))
.
entrySet
()
.
stream
()
.
sorted
(
Map
.
Entry
.
comparingByValue
())
.
forEachOrdered
(
entry
->
{
System
.
out
.
println
(
entry
.
getKey
()
+
" → "
+
entry
.
getValue
());
});
}
catch
(
FileNotFoundException
e
)
{
e
.
printStackTrace
();
}
}
}
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