我正嘗試使用Java Streams逐步模擬方程。我有一個插件,可以讓我在調試器的每一步看到結果,這是我的最終目標。我也想測試什麼修改具體數字會做輸出在Java流中重用相同的值
但是,我需要重用一個值在第一個映射函數用於最後的映射函數,我不知道該怎麼做。我已經評論了我想做什麼,但是編譯器發現它不正確。
基本上,我測試下面的數學函數...
((2x + 10)/2) - x = 5
List<Month> months = new ArrayList<>(12);
months.add(new Month(1, "January"));
months.add(new Month(2, "February"));
months.add(new Month(3, "March"));
months.add(new Month(4, "April"));
months.add(new Month(5, "May"));
months.add(new Month(6, "June"));
months.add(new Month(7, "July"));
months.add(new Month(8, "August"));
months.add(new Month(9, "September"));
months.add(new Month(10, "October"));
months.add(new Month(11, "November"));
months.add(new Month(12, "December"));
months.stream() // 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
.map((month) -> month.number * 2) // 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24
.map((product) -> product + 10) // 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34
.map((sum) -> sum/2) // 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17
// --> .map((quotient) -> quotient - month.number) // 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
.toArray();
只是要清楚,我想重用month.number
值。
編輯 只是要清楚,month.number
代表x
與第一.map()
,我顯示的2x
(month.number * 2
)的結果。
而且,這裏是Month
private class Month {
int number;
String name;
public Month(int month, String name) {
this.number = month;
this.name = name;
}
}
這是什麼* *方程有一個月的名字呢? –
對不起,'x = month.number'。不是名字,但我打算以後再使用月份名稱。現在我只是使用'month.number' –
你有沒有考慮引入包裝類,以保持原來的x以及當前步驟的計算結果? – VitalyZ