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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 java 8 中使用流過濾兩個列表對象并將值設置為新列表

如何在 java 8 中使用流過濾兩個列表對象并將值設置為新列表

海綿寶寶撒 2023-03-23 13:36:45
我使用 java 8,我有兩個對象:人類:public class Person {    private String id;    private String name;    public Person() {    }    public Person(String id, String name) {        this.id = id;        this.name = name;    }    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    @Override    public String toString() {        return "Person{" +                "id='" + id + '\'' +                ", name='" + name + '\'' +                '}';    }}人 1 類:public class Person1 {    private String id;    private String name;    public Person1() {    }    public Person1(String id, String name) {        this.id = id;        this.name = name;    }    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    @Override    public String toString() {        return "Person1{" +                "id='" + id + '\'' +                ", name='" + name + '\'' +                '}';    }}我有兩個列表: List<Person> persons= Arrays.asList(new Person("1","A"),new Person("2","B"));  List<Person1> persons1 = Arrays.asList(new Person1("3","C"),new Person1("1","F"));現(xiàn)在我想使用流 java 8 循環(huán)兩個列表并進行比較。如果列表 persons 中的任何對象等于 persons1 ,我將創(chuàng)建新列表并為其設置新值。示例:如果 Person1("1","F") 等于 Person("1","A")因為我使用id比較它,我從 Person1 獲得的名字設置為 Person。結果:Person("1,"F") 并將其添加到兩個新列表中。我使用時的代碼: for (Person person : persons) {            for (Person1 person1 : persons1 ) {                if (person1.getId().equals(person.getId())) {                    person.setName(person1.getId());                    break;                }            }        }
查看完整描述

2 回答

?
holdtom

TA貢獻1805條經驗 獲得超10個贊

有些任務最好用流來完成,而另一些則用迭代來完成。許多任務最好通過結合這兩種方法來完成。在此解決方案中,使用流來構建地圖,然后使用迭代來更新匹配人員的姓名。您的解決方案以二次時間運行,而此解決方案以線性時間復雜度運行。


Map<String, String> idToNameMap = persons1.stream()

    .collect(Collectors.toMap(Person1::getId, Person1::getName, (a, b) -> a));

for (Person person : persons) {

    if (idToNameMap.containsKey(person.getId())) {

        person.setName(idToNameMap.get(person.getId()));

    }

}


查看完整回答
反對 回復 2023-03-23
?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

這不是最漂亮的答案等等,但我想它會幫助你了解它是如何工作的。


List<Person> collect = persons.stream()

        .filter(person -> persons1.stream().anyMatch(person1 -> person1.getId() == person.getId()))

        .map(person -> {

            Person1 getted = persons1.stream()

                .filter(person1 -> person1.getId() == person.getId())

                .findAny()

                .orElseGet(null);

            if (getted == null) throw new IllegalStateException("Should be Impossible");

            person.setName(getted.getName());

            return person;

        })

        .collect(Collectors.toList());


查看完整回答
反對 回復 2023-03-23
  • 2 回答
  • 0 關注
  • 190 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號