4 ΡΠΏΠΎΡΠΎΠ±Π° Π½Π°ΠΉΡΠΈ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΡ Π² Java List
ΠΡΡΠΎΡΠ½ΠΈΠΊ: Codippa Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΠΎΠΈΡΠΊΠ° Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠΎΠ² Π² List. ΠΡΠ±Π»ΠΈΠΊΠ°ΡΠ°ΠΌΠΈ ΠΌΡ Π½Π°Π·ΡΠ²Π°Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π°.
1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Set
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΏΠΎΡΠΎΠ±Π° ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² Java List Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Set.- Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Java Set ΠΈ Π½ΠΎΠ²ΡΠΉ ArrayList Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
- ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ ΠΈΠ»ΠΈ ΡΠΈΠΊΠ» ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ.
- ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΡΠΏΠΈΡΠΊΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² Set, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅ΡΠΎΠ΄ add().
- Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ add() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½, ΠΈ false, Π΅ΡΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΆΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°Π» Π² Set.
- ΠΡΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΆΠ΅ Π΅ΡΡΡ Π² Set, ΠΎΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠΎΠΌ. Π’ΠΎΠ³Π΄Π° ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ Π² ArrayList.
- Π ΠΊΠΎΠ½ΡΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ Π½ΠΎΠ²ΡΠΉ ArrayList Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π²ΡΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° (List).
List<Integer> numbers = List.of(1, 2, 3, 4, 3, 1, 2);
Set<Integer> set = new HashSet<>();
List<Object> duplicates = new ArrayList<>();
numbers.forEach(n -> {
if (!set.add(n)) {
duplicates.add(n);
}
});
System.out.println("Duplicate elements: " + duplicates);
ΠΡΠ²ΠΎΠ΄:
Duplicate elements: [3, 1, 2]
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° List ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ forEach(), Π½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±.
2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Map
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΡΡΠ°ΠΏΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° ΠΏΠΎΠΈΡΠΊΠ° Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠΎΠ² Π² List.- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Map ΠΈ Π½ΠΎΠ²ΡΠΉ ArrayList Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
- ΠΠ»ΡΡΠ°ΠΌΠΈ ΡΡΠΎΠ³ΠΎ Map Π±ΡΠ΄ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ List, Π° Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΈΡ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ Π² List.
- ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠΈΠΊΠ» ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ (List).
- ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² List ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π»ΠΈ ΠΎΠ½ ΠΊΠ°ΠΊ ΠΊΠ»ΡΡ Π² Map, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅ΡΠΎΠ΄ containsKey().
- ΠΡΠ»ΠΈ ΠΎΠ½ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΡΠ²Π΅Π»ΠΈΡΡΡΠ΅ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² Map ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π΅Π³ΠΎ ΡΠ½ΠΎΠ²Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅ΡΠΎΠ΄ put().
- ΠΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π΅Π³ΠΎ Π² Map ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ 1.
- ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΏΠΈΡΠΊΠ° Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Map ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ 1 ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠ°ΠΌΠΈ.
- ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ Map ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ 1, Π² ΡΠΏΠΈΡΠΎΠΊ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
List<Integer> numbers = List.of(1, 2, 3, 4, 3, 1, 2);
Map<Integer, Integer> countMap = new HashMap<>();
List<Object> duplicates = new ArrayList<>();
numbers.forEach(n -> {
if (countMap.containsKey(n)) {
countMap.put(n, countMap.get(n) + 1);
} else {
countMap.put(n, 1);
}
});
countMap.keySet().forEach(k -> {
if(countMap.get(k)> 1) {
duplicates.add(k);
}
});3. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΠΈΠΊΠ»ΠΎΠ² (nested loops)
ΠΡΠ»ΠΈ Π²Π°Ρ ΠΏΠΎΠΏΡΠΎΡΡΡ Π½Π°ΠΉΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΊΠ»Π°ΡΡΠΎΠ² Collection, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Set, Map ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅, ΡΠΎ ΡΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π΅Π½. ΠΡΠ°ΠΏΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°:- ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠΈΠΊΠ» ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ (List).
- ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΈΠΊΠ» Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π·, Π²Π΅ΡΠ½ΠΈΡΠ΅ΡΡ ΠΊ Π½Π°ΡΠ°Π»Ρ ΠΈ ΡΠ½ΠΎΠ²Π° ΠΏΠΎΠ²ΡΠΎΡΠΈΡΠ΅ Π²ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΎΡΡΠ°Π²ΡΠ΅ΠΉΡΡ ΡΠ°ΡΡΠΈ ΡΠΏΠΈΡΠΊΠ°.
- ΠΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΈΠΊΠ»Π° ΡΠ°Π²Π΅Π½ Π»ΡΠ±ΠΎΠΌΡ ΠΈΠ· ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΎΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠΎΠΌ.
List<Integer> numbers = List.of(1, 2, 3, 4, 3, 1, 2);
List<Object> duplicates = new ArrayList<>();
for (int i = 0; i < numbers.size() - 1; i++) {
for (int j = i + 1; j < numbers.size(); j++) {
if (numbers.get(i).equals(numbers.get(j))) {
duplicates.add(numbers.get(i));
}
}
}4. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Java Stream
ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΏΠΎΡΠΎΠΊΠ°Ρ Java 8 ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:- ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠΉΡΠ΅ List Π² ΠΏΠΎΡΠΎΠΊ (Stream).
- ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠΉΡΠ΅ ΠΏΠΎΡΠΎΠΊ Π² Map, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅ΡΠΎΠ΄ collect(). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ»ΡΡ (key) β ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΡΠΏΠΈΡΠΊΠ΅, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (value) β ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ.
- ΠΠ΅ΡΠΎΠ΄ collect() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ, ΠΈ Map ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Collector Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Collector ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠ»ΡΡΠΈ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ Map.
- ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Ρ ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ ΠΊΠ»ΡΡΠΈ Map Π±ΡΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΠΏΠΈΡΠΊΠ° (List), Π° Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎΠΌ ΠΈΡ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ, Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΎΡΠ° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Collectors.groupingBy().
- ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Map Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ groupingBy(), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ entrySet() Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π°Π±ΠΎΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Map.Entry.
- ΠΡΡΠΈΠ»ΡΡΡΡΠΉΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (ΡΠΎ Π΅ΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ) Π±ΠΎΠ»ΡΡΠ΅ 1.
- Π‘ΠΎΠΏΠΎΡΡΠ°Π²ΡΡΠ΅ ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Ρ ΠΈΡ ΠΊΠ»ΡΡΠ°ΠΌΠΈ.
List<Integer> numbers = List.of(1, 2, 3, 4, 3, 1, 2);
Map<Object, Long> map = numbers.
stream().
collect(
Collectors.
groupingBy(n -> n, Collectors.counting())
);
List<Object> duplicates = map.
entrySet().
stream().
filter(e -> e.getValue() > 1).
map(e -> e.getKey()).
collect(Collectors.toList());
ΠΠ΅ΡΠΎΠ΄ groupingBy() ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΠΊΡΠΈΡΠ΅ΡΠΈΠ΅Π². ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°:- ΠΡΠΈΡΠ΅ΡΠΈΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ groupingBy() ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Function, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ.
- Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ Π³ΡΡΠΏΠΏΠΈΡΡΠ΅ΠΌ ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡΠΈ n -> n, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΡ Π³ΡΡΠΏΠΏΠΈΡΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΠΈΡΠΊΠ° ΠΏΠΎ ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ.
- ΠΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ groupingBy() β ΡΡΠΎ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΡΡΠΏΠΏΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Ρ.
- ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Collectors.counting(), ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅Ρ Map, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΡΠΏΠΈΡΠΊΠ΅.
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΌΠ΅Π΄ΠΈΠ°ΠΏΠ»Π΅Π΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Java
ΠΡΡΠΎΡΠ½ΠΈΠΊ: Medium ΠΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π° Java ΠΏΡΠΎΡΡΠΎΠΉ ΠΌΠ΅Π΄ΠΈΠ°ΠΏΠ»Π΅Π΅Ρ Π΄Π»Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π°ΡΠ΄ΠΈΠΎ- ΠΈ Π²ΠΈΠ΄Π΅ΠΎΡΠ°ΠΉΠ»ΠΎΠ².
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΌΠ΅Π΄ΠΈΠ°ΠΏΠ»Π΅Π΅ΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π½Π°ΡΡΠΈΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Java Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠ΅Π΄ΠΈΠ°ΡΠ°ΠΉΠ»Π°ΠΌΠΈ. Π§ΡΠΎΠ±Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΡ Π·Π°Π΄Π°ΡΡ, ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ JavaFX ΠΈ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° (GUI) Π΄Π»Ρ Java.
Π¨Π°Π³ 1: ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Π½Π°Ρ Java-ΠΏΡΠΎΠ΅ΠΊΡ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ IDE ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Eclipse, Π½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π»ΡΠ±ΠΎΠΉ IDE ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ Π²ΡΠ±ΠΎΡΡ. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Java ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡΠ΅ Π΅Π³ΠΎ βMediaPlayerβ. ΠΠ°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ JavaFX Π² Π½Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ JavaFX Π² ΠΏΡΡΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°.Π¨Π°Π³ 2: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
ΠΠ°Π»Π΅Π΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΌΠ΅Π΄ΠΈΠ°ΠΏΠ»Π΅Π΅ΡΠ°. ΠΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Ρ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ, ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈ ΠΏΠ°Π½Π΅Π»ΡΡ ΠΌΠ΅Π΄ΠΈΠ°ΠΏΠ»Π΅Π΅ΡΠ°, Π³Π΄Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π²ΠΈΠ΄Π΅ΠΎ- ΠΈΠ»ΠΈ Π°ΡΠ΄ΠΈΠΎΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ. ΠΠ»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΠΊΠ΅Ρ BorderPane. ΠΠ°Π½Π΅Π»Ρ ΠΌΠ΅Π΄ΠΈΠ°ΠΏΠ»Π΅Π΅ΡΠ° Π±ΡΠ΄Π΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΡΠ΅Π½ΡΡΠ΅ BorderPane, Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ β Π² Π½ΠΈΠΆΠ½Π΅ΠΉ ΡΠ°ΡΡΠΈ BorderPane. ΠΠΎΡ ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°:import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;
public class MediaPlayerApp extends Application {
private MediaPlayer mediaPlayer;
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Media Player");
Button playButton = new Button("Play");
playButton.setOnAction(e -> mediaPlayer.play());
Button stopButton = new Button("Stop");
stopButton.setOnAction(e -> mediaPlayer.stop());
BorderPane borderPane = new BorderPane();
Media media = new Media("http://www.example.com/sample.mp4");
mediaPlayer = new MediaPlayer(media);
MediaView mediaView = new MediaView(mediaPlayer);
borderPane.setCenter(mediaView);
borderPane.setBottom(stopButton);
borderPane.setRight(playButton);
Scene scene = new Scene(borderPane, 600, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Π ΡΡΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π΄Π²Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ: playButton ΠΈ stopButton. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ play() ΠΎΠ±ΡΠ΅ΠΊΡΠ° mediaPlayer. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ stop() ΠΎΠ±ΡΠ΅ΠΊΡΠ° mediaPlayer. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ Media Ρ URL-Π°Π΄ΡΠ΅ΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²ΠΈΠ΄Π΅ΠΎΡΠ°ΠΉΠ»Π° ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ mediaPlayer Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Media. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ MediaView Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ MediaPlayer ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π½ΡΡΠ° BorderPane.