Computer Science на языке Java 2022 Дэвид Копец Классические задачи Computer Science на языке Java 2022 ббк


Генерация чисел Фибоначчи с помощью потока



Download 6,2 Mb.
Pdf ko'rish
bet20/236
Sana25.02.2022
Hajmi6,2 Mb.
#464393
1   ...   16   17   18   19   20   21   22   23   ...   236
Bog'liq
Kopec Klassicheskie zadachi Computer Science na yazyke Java 643091

1.1.5. Генерация чисел Фибоначчи с помощью потока
До.сих.пор.мы.писали.методы,.которые.выводят.одно.значение.из.последователь-
ности.Фибоначчи..А.что,.если.вместо.этого.мы.хотим.вывести.всю.последователь-
ность.вплоть.до.некоторого.значения?.Легко.преобразовать.
fib4()
.в.поток.Java,.
задействуя.шаблон.генератора.кода..В.процессе.итерирования.генератора.на.
каждой.итерации.будет.выводиться.значение.последовательности.Фибоначчи.с.ис-
пользованием.лямбда-функции,.возвращающей.следующее.число.(листинг.1.8).
Листинг 1.8. 
Fib5.java
package
chapter1;
import
java.util.stream.IntStream;
public class
Fib5 {
private int
last = 0, next = 1; // fib(0), fib(1)
public
IntStream stream() {
return
IntStream.
generate
(() -> {
int
oldLast = last;
last = next;
next = oldLast + next;
return
oldLast;
});
}
public static void
main(String[] args) {
Fib5 fib5 = 
new
Fib5();
fib5.stream().limit(41).forEachOrdered(System.
out
::println);
}
}


32
Глава 1.
Простые задачи
Если.запустить.
Fib5.java
,.то.будут.напечатаны.первые.41.число.из.последова-
тельности.Фибоначчи..Для.каждого.числа.в.последовательности.функция.
Fib5
.
запускает.один.раз.лямбда-функцию.
generate()
,.которая.управляет.переменными.
последнего.и.следующего.экземпляров..Вызов.функции.
limit()
.гарантирует,.что.
потенциально.бесконечный.поток.после.достижения.41-го.элемента.перестанет.
извлекать.числа.
1.2. ПРОСТЕЙШЕЕ СЖАТИЕ
Зачастую.важна.бывает.экономия.места.—.виртуального.или.реального..Использо-
вать.меньше.места.означает.более.эффективно.работать.и.экономить.деньги..Если.
вы.арендуете.квартиру.большей.площади,.чем.нужно.для.вашей.семьи.и.вещей,.
то.можете.ужаться.до.жилья.меньшего.размера,.которое.стоит.дешевле..Если.вы.
побайтно.платите.за.хранение.данных.на.сервере,.то.можете.сжать.данные.так,.
чтобы.их.хранение.обходилось.дешевле..
Сжатие
.—.это.процесс.получения.дан-
ных.и.их.кодирования.(изменения.формы).таким.образом,.чтобы.они.занимали.
меньше.места..
Распаковка
.предусматривает.обратный.процесс.—.возвращение.
данных.в.исходную.форму.
Если.сжатие.данных.так.эффективно.для.их.хранения,.то.почему.оно.не.применя-
ется.для.всех.данных?.Дело.в.том,.что.существует.компромисс.между.временем.
и.пространством..На.то,.чтобы.сжать.часть.данных.и.распаковать.их.обратно.
в.исходную.форму,.требуется.время..Поэтому.сжатие.данных.имеет.смысл.только.
в.ситуациях,.когда.небольшой.размер.важнее,.чем.быстрое.выполнение..Возьмем,.
к.примеру,.большие.файлы,.передаваемые.через.интернет..Их.сжатие.имеет.смысл,.
поскольку.для.передачи.файлов.потребуется.больше.времени,.чем.для.их.рас-
паковки.после.получения..Кроме.того,.время,.необходимое.для.сжатия.файлов.
при.их.хранении.на.исходном.сервере,.необходимо.учитывать.только.один.раз.
Сжать.данные.самыми.простыми.способами.можно.тогда,.когда.вы.понимаете,.
что.типы.хранилищ.данных.используют.больше.битов,.чем.необходимо.для.их.
содержимого..Например,.на.низком.уровне,.если.целые.числа.со.знаком,.значения.
которых.никогда.не.превысят.32.767,.сохраняются.в.памяти.как.64-разрядные.
целые.числа.—.
long
,.то.они.сохраняются.неэффективно..Вместо.этого.их.можно.
хранить.как.16-разрядные.целые.числа.—.
short
..Это.уменьшит.потребление.про-
странства.для.фактического.хранения.чисел.на.75.%.(16.бит.вместо.64)..Таким.
неэффективным.способом.хранятся.миллионы.чисел,.—.это.может.означать.до.
1.Мбайт.впустую.потраченного.пространства.
В.Java.из.соображений.простоты.(что,.конечно.же,.законная.цель).разработчик.
иногда.избавлен.от.размышлений..В.основном.в.коде.для.хранения.целых.чисел.
применяется.32-битный.тип.
int
..Это.нормально..Но.если.хранить.миллионы.


1.2. Простейшее сжатие

Download 6,2 Mb.

Do'stlaringiz bilan baham:
1   ...   16   17   18   19   20   21   22   23   ...   236




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish