亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

使用兩個列表在流中進行流傳輸

使用兩個列表在流中進行流傳輸

慕斯709654 2023-12-10 14:55:27
我有 2 個員工名單。第一個列表包含姓名和員工 ID,第二個列表包含員工 ID 和手機號碼。員工 ID 是主鍵。要求是使用流式傳輸方式獲取包含 id、姓名和手機號碼的列表。public class MainApp {    public static void main(String[] args) {        // TODO Auto-generated method stub        Employee emp1 = new Employee(101, "Shiv1");        Employee emp2 = new Employee(102, "Shiv2");        Employee emp3 = new Employee(103, "Shiv3");        Employee emp4 = new Employee(104, "Shiv4");        Employee emp5 = new Employee(101, 00001);        Employee emp6 = new Employee(101, 00002);        Employee emp7 = new Employee(101, 00003);        Employee emp8 = new Employee(101, 00004);        List<Employee> employeeNameList = new ArrayList<Employee>();        employeeNameList.add(emp1);        employeeNameList.add(emp2);        employeeNameList.add(emp3);        employeeNameList.add(emp4);        List<Employee> employeeMobileList = new ArrayList<Employee>();        employeeMobileList.add(emp5);        employeeMobileList.add(emp6);        employeeMobileList.add(emp7);        employeeMobileList.add(emp8);        employeeNameList.stream()            .filter(item -> item.getId() == 3)            .map(i -> i.setMobileNo(9089));    }}
查看完整描述

1 回答

?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

  1. 您可以使用第一個列表創建empId到它們的映射。name

    Map<Integer, String> empIdToName = employeeNameList.stream()
            .collect(Collectors.toMap(Employee::getId, Employee::getName, (a, b) -> a));
  2. 使用這樣的映射進一步創建對象,同時迭代第二個映射并查找該映射,例如:

    List<Employee> employees = employeeMobileList.stream()
            .filter(item -> empIdToName.containsKey(item.getId()))
            .map(i -> new Employee(i.getId(), empIdToName.get(i.getId()), i.getMobileNo()))
            .collect(Collectors.toList());


查看完整回答
反對 回復 2023-12-10
  • 1 回答
  • 0 關注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

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

公眾號

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