Руководство по Java metanit com Данный раздел посвящен языку программирования Java и всем сопутствующим



Download 1,75 Mb.
Pdf ko'rish
bet105/110
Sana23.02.2022
Hajmi1,75 Mb.
#177154
TuriРуководство
1   ...   102   103   104   105   106   107   108   109   110
Bog'liq
2 5305247065486395003

getAverage(): возвращает среднее значение
getCount(): возвращает количество элементов в наборе
getMax(): возвращает максимальное значение
getMin(): возвращает минимальное значение
getSum(): возвращает сумму элементов
accept(): добавляет в набор новый элемент
В данном случае мы получаем среднюю цену смартфонов для каждой группы.
Метод mapping
Метод mapping позволяет дополнительно обработать данные и задать функцию отображения
объектов из потока на какой-нибудь другой тип данных. Например:
Map> phonesByCompany = phoneStream.collect(
Collectors.groupingBy(Phone::getCompany,
Collectors.mapping(Phone::getName, Collectors.toList())));
for(Map.Entry> item : phonesByCompany.entrySet()){
System.out.println(item.getKey());
for(String name : item.getValue()){
System.out.println(name);
}
}
Выражение Collectors.mapping(Phone::getName, Collectors.toList()) указывает, что в группу
будут выделятся названия смартфонов, причем группа будет представлять объект List.


Сортировка
Коллекции, на основе которых нередко создаются потоки, уже имеют специальные методы
для сортировки содержимого. Однако класс Stream также включает возможность сортировки.
Такую сортировку мы можем задействовать, когда у нас идет набор промежуточных операций с
потоком, которые создают новые наборы данных, и нам надо эти наборы отсортировать.
Для простой сортировки по возрастанию применяется метод sorted():
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class StreamApp {
public static void main(String[] args) {
List phones = new ArrayList();
phones.addAll(Arrays.asList(new String[]
{"iPhone 6 S", "Lumia 950", "Huawei Nexus 6P",
"Samsung Galaxy S 6", "LG G 4", "Xiaomi MI 5",
"ASUS Zenfone 2", "Sony Xperia Z5", "Meizu Pro 5",
"Lenovo S 850"}));
phones.stream()
.filter(p->p.length()<12)
.sorted() // сортировка по возрастанию
.forEach(s->System.out.println(s));
}
}
Консольный вывод после сортировки объектов:
LG G 4
Lumia 950
Meizu Pro 5
Xiaomi MI 5
iPhone 6 S
Однако данный метод не всегда подходит. Уже по консольному выводу мы видим, что метод
сортирует объекты по возрастанию, но при этом заглавные и строчные буквы рассматриваются
отдельно.
Кроме того, данный метод подходит только для сортировки тех объектов, которые реализуют
интерфейс Comparable.
Если же у нас классы объектов не реализуют этот интерфейс или мы хотим создать какую-то
свою логику сортировки, то мы можем использовать другую версию метода sorted(), которая в
качестве параметра принимает компаратор.
Например, пусть у нас есть следующий класс Phone:
class Phone{
private String name;
private String company;
private int price;
public Phone(String name, String comp, int price){
this.name=name;
this.company=comp;
this.price = price;
}
public String getName() {
return name;
}
public int getPrice() {
return price;
}
public String getCompany() {


return company;
}
}
Отсортируем поток обектов Phone:
import java.util.Comparator;
import java.util.stream.Stream;
public class StreamApp {
public static void main(String[] args) {
Stream
phoneStream = Stream.of(new Phone("iPhone 6 S", "Apple",
600),
new Phone("Lumia 950", "Microsoft", 500),
new Phone("LG G 5", "LG",450),
new Phone("ASUS Zenfone 2", "ASUS",150),
new Phone("Lumia 640", "Microsoft", 200));
phoneStream.sorted(new PhoneComparator())
.forEach(p->System.out.printf("%s (%s) - %d \n",
p.getName(), p.getCompany(), p.getPrice()));
}
}
class PhoneComparator implements Comparator
{
public int compare(Phone a, Phone b){
return a.getName().toUpperCase().compareTo(b.getName().toUpperCase());
}
}
Здесь определен класс компаратора PhoneComparator, который сортирует объекты по полю
name. В итоге мы получим следующий вывод:
ASUS Zenfone 2 (ASUS) - 150
iPhone 6 S (Apple) - 600
LG G 5 (LG) - 450
Lumia 640 (Microsoft) - 200
Lumia 950 (Microsoft) - 500



Download 1,75 Mb.

Do'stlaringiz bilan baham:
1   ...   102   103   104   105   106   107   108   109   110




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