למדות
אם אתה לא יודע מהן למבדות בכלל, אז: למבדה נראית כך:(a, b) -> a.compareTo(b)
(переменные) -> действие
זה מספיק לעת עתה. אתה יכול לקרוא את התיאוריה כאן: קישור אחד , קישור שני , אבל אני חושב שהתרגול הרבה יותר כיף. אני מציע לך לפתור את הבעיה הבאה: כתוב מחשבון בשיטה 1. השיטה צריכה לקבל 2 ערכים דיגיטליים ומשהו אחר. הקוד שלך ייראה בערך כך:
class Lambda{
public static void main (String[] args) {
}
public static double calculate(){
return null;
}
}
עליך להזין 3 פרמטרים בחתימת השיטה calculate
, להוסיף פקודה אחת return
ולבדוק את קריאת השיטה הזו ב- main
. מה שיטה זו אמורה להיות מסוגלת לעשות?
- לְקַפֵּל;
- לְהַכפִּיל;
- לחלק;
- להחסיר;
- לחשב את השורש;
- להעלות לכוח;
- להעלות לחזקה את סכום הארגומנטים חלקי המספר הראשון + 117;
- וכל פעולות אחרות שאתה יכול לחשוב עליהן.
if-else
;char
כאינדיקטור פעולה;switch-case
;- וכל השאר שעולה לך בראש.
- רק למבדות, המשימה עליהן.
inputStream
וזה לא OutputStream
. זה שונה, זה יותר מעניין. זרמים החליפו מחזורים, לא לגמרי, אבל עדיין. הם מקבלים את המוטו "אל תסביר איך לעשות את זה, תסביר מה לעשות". דוגמה קטנה לנחל:
List<String> myList = Arrays.asList("a1", "a2", "b1", "c2", "c1");
myList.stream()
.filter(s -> s.startsWith("c"))
.map(String::toUpperCase)
.sorted()
.forEach(System.out::println);
מה קורה פה? בואו נוסיף הערות:
myList.stream() // получить поток
.filter(s -> s.startsWith("c")) //отфильтровать значения, оставить те, что начинаются с «с»
.map(String::toUpperCase) // преобразовать все значения, перевести в верхний регистр
.sorted() // отсортировать по порядку (дефолтный порядо)
.forEach(System.out::println); // вывести каждый элемент на экран
השווה עם לולאה רגילה:
List<String> toSort = new ArrayList<>();
for(String s : myList){
if(s.startsWith("c")){
toSort.add(s.toUpperCase());
}
}
Collections.sort(toSort);
for(String s : toSort){
System.ouy.println(s);
}
כשאתה קורא את הקוד, הכל נראה מפחיד, אבל האם זה קל יותר עם הערות? זה נורמלי, גם אני לא הבנתי אותם הרבה זמן. המפתח להבנה הוא תרגול. לכן, אנחנו מתחילים לקרוא מאמרים של צד שלישי ולחפש תשובות לשאלות שלנו, אתה יכול לשאול אותם גם כאן בתגובות, אני לא אתן תשובה מלאה, אבל אני אצביע על הכיוון. רשימת משימות מ-JavaRush שלדעתי הן נהדרות לתרגול סטרימינג:
-
2208 - ניתן לפתור עם 1 זרם ו-1 החזרה, כלומר. גוף השיטה יתחיל עם
return
ואז יהיה זרם שלם אחד. בוא נשמיט את הדרישהStringBuilder
. -
1908 - אתה יכול גם לפתור את זה עם זרם אחד ו-1 חזרה. מתחילים בקריאת הקובץ. אני לא יודע איך להקליט לקובץ דרך זרמים (אם זה אפשרי), בזמן שאנחנו עושים את זה ידנית. הָהֵן. אנחנו פותחים רק 2 זרמים (קונסול וכתיבה לקובץ). אנו קוראים את הקובץ באמצעות שיטות שיחזירו לנו גיליון או זרם (גוגל ו-javadoc).
-
1907 - בתיאוריה אפשר לפתור את זה גם בזרם אחד. הקלט לזרם הוא שם הקובץ, הפלט הוא מספר המילים בעולם.
-
1016 - בצורה מעט מעוותת, אתה יכול לפתור את זה בזרם אחד ובחזרה אחת;
-
1821 - קל מאוד ובזרם אחד וחזרה אחת.
2 המשימות הללו יציגו אתכם לשיטת סטרימינג נוספת ועוד אספן.
-
1925 - אתה יכול לקבל שורה עם מילים בזרם אחד ואז לכתוב אותה לקובץ (אני לא יודע אם אפשר לכתוב לקובץ מזרם)
GO TO FULL VERSION