第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Java 8 添加對(duì)象列表的多個(gè)屬性的值

Java 8 添加對(duì)象列表的多個(gè)屬性的值

猛跑小豬 2021-10-06 11:01:45
假設(shè)我在下面有一個(gè)帶有 getter 和 setter 的類(lèi),但只有默認(rèn)構(gòu)造函數(shù)。注意:我不允許改變這個(gè)類(lèi)的結(jié)構(gòu)。class Target {    private String year;    private String month;    private String name;    private double target;    private double achieved;    public String getYear() {        return year;    }    public void setYear(String year) {        this.year = year;    }    public String getMonth() {        return month;    }    public void setMonth(String month) {        this.month = month;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public double getTarget() {        return target;    }    public void setTarget(double target) {        this.target = target;    }    public double getAchieved() {        return achieved;    }    public void setAchieved(double achieved) {        this.achieved = achieved;    }    }我必須根據(jù)年份和名稱(chēng)添加 Target 和 Achieved 列值。Year Month Name Target Achieved2018  8    Joey 50.00   10.002018  9    Joey 200.00  100.002018  9    Fred 200.00  150.002018  9    Fred 20.00   50.00所以輸出將是:Year Month Name Target  Achieved2018  8    Joey 50.00   10.002018  9    Joey 200.00  100.002018  9    Fred 220.00  200.00我已經(jīng)看到一個(gè)例子,如果我有一個(gè)接受參數(shù)的構(gòu)造函數(shù),我如何實(shí)現(xiàn)這樣的事情,但我對(duì)Group by 和 sum 對(duì)象的概念不是很清楚,比如在 SQL 中使用 Java lambdas?:如何僅使用默認(rèn)構(gòu)造函數(shù)來(lái)獲得相同類(lèi)型List<Target>但具有多列的計(jì)算值?
查看完整描述

2 回答

?
互換的青春

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

似乎您需要根據(jù)三件事進(jìn)行分組:Year,Month和Name,因此這可能如下所示:


Collection<Target> merged = yourListOfTargets

            .stream()

            .collect(Collectors.toMap(

                    t -> List.of(t.getYear(), t.getMonth(), t.getName()),

                    Function.identity(),

                    (left, right) -> {

                        left.setTarget(left.getTarget() + right.getTarget());

                        left.setAchieved(left.getAchieved() + right.getAchieved());

                        return left;

                    }))

            .values();

正如 Federico 在評(píng)論中提到的,這將改變您在初始List. 您可能會(huì)接受它,但如果不是,則需要替換Function.identity()為一個(gè)復(fù)制功能,該功能Target將從現(xiàn)有功能中創(chuàng)建一個(gè)新功能。


查看完整回答
反對(duì) 回復(fù) 2021-10-06
  • 2 回答
  • 0 關(guān)注
  • 312 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)