成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java 流式編程的七個必學技巧

開發 開發工具
作為Java開發者,我們還沒有完全掌握Java Streams這個多功能工具的威力。在這里,你將發現一些有價值的技巧,可以作為參考并應用到你的下一個項目中。

Java Streams在很多年前就被引入了,但作為Java開發者,我們還沒有完全掌握這個多功能工具的威力。在這里,你將發現一些有價值的技巧,可以作為參考并應用到你的下一個項目中。

在下面的示例中,我們將使用以下類。

@Getter
class Company {
  private String name;
  private Address address;
  private List personList;
}

@Getter
class Person {
  private Long id;
  private String name;
}

@Getter
class Address {
  private String street;
  private City city;
}

@Getter
class City {
  private String name;
  private State state;
}

@Getter
class State{
  private String name;
}

1. 使用方法引用簡化地圖

以下代碼可獲取公司地址的城市名稱。

public List getCityNames(List companyList){
  return companyList.stream()
    .map(company -> company.getAddress().getCity().getName())
    .toList();
}

可以替換為以下更具可讀性的版本。

public List getCityNames(List companyList){
  return companyList.stream()
    .map(Company::getAddress)
    .map(Address::getCity)
    .map(City::getName)
    .toList();
}

2. 空值檢查

上述代碼加上空值檢查。

public List getCityNames(List companyList){
  return companyList.stream()
    .map(Company::getAddress)
    .filter(Objects::nonNull)
    .map(Address::getCity)
    .filter(Objects::nonNull)
    .map(City::getName)
    .filter(Objects::nonNull)
    .toList();
}

3. 從流的流到流

以下代碼獲取所有公司的人員名單列表。

public List getAllPerson(List companyList){
  // 生成一個Person列表的列表
  List> partialResult = companyList.stream()
    .map(Company::getPersonList)
    .toList();

  // 將每個Person列表添加到結果中
  List result = new ArrayList<>();
  partialResult.forEach(result::addAll);

  return result;
}

可以用以下方式實現相同的功能。

public List getAllPerson(List companyList){
  return companyList.stream()
    .map(Company::getPersonList) // 返回一個Stream>
    .flatMap(List::stream)  // 返回一個Stream
    .toList(

4. 按屬性分組

以下代碼將返回一張地圖,其中包含每個城市的公司列表。

public Map> getCompaniesByCity(List companyList){
  return companyList.stream()
    .collect(Collectors.groupingBy(company -> company.getAddress().getCity()));
}

5. 檢查流中是否有項目

以下代碼會檢查是否有公司在某個城市。

public boolean hasCompanyInCity(List companyList, String cityName){
  return companyList.stream()
    .map(Company::getAddress)
    .map(Address::getName)
    .anyMatch(cityName::equals);
}

同樣的方法也適用于noneMatch,如果你想檢查某個城市是否有公司。

public boolean hasNoCompanyInCity(List companyList, String cityName){
  return companyList.stream()
    .map(Company::getAddress)
    .map(Address::getName)
    .noneMatch(cityName::equals);
}

6. 記錄日志

使用peek方法為每個返回的城市名記錄日志。

public List getCityNames(List companyList){
  return companyList.stream()
    .map(Company::getAddress)
    .map(Address::getCity)
    .map(City::getName)
    .peek(cityName -> log.info(cityName))
    .toList();
}

7. 獲取唯一的城市名稱

使用distinct從流中移除重復的城市名稱。

public List getUniqueCityNames(List companyList){
  return companyList.stream()
    .map(Company::getAddress)
    .map(Address::getCity)
    .map(City::getName)
    .distinct()
    .toList();
}

以上就是通過實例展示的7個技巧,希望對你有所幫助。

責任編輯:趙寧寧 來源: Java學研大本營
相關推薦

2015-06-11 13:34:54

編程編程階段

2023-09-07 16:28:46

JavaScrip

2021-11-22 12:13:54

Linuxwget 命令

2021-08-17 10:08:44

HTML網站網絡

2022-04-14 10:40:11

領導者IT團隊遠程團隊

2022-11-21 17:58:23

編程語言技巧

2019-09-09 10:32:51

基于意圖的網絡IBN網絡

2022-07-14 10:34:13

IT領導者CIO首席信息官

2021-06-28 11:46:31

GitLinux

2018-04-27 09:22:21

數據存儲技巧

2025-03-21 08:20:00

數據清洗Python編程

2023-05-30 09:59:38

2018-05-24 08:47:15

數據存儲技巧

2016-12-13 10:06:25

編寫Java單元測試技巧

2024-11-08 16:24:39

2009-05-20 16:17:39

Linux硬盤技巧

2021-12-08 10:31:46

ITIT領導IT管理

2023-11-28 12:07:06

Python代碼

2023-12-15 08:51:48

2015-11-30 17:12:31

Git使用技巧
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品久久久久久首妖 | 欧美亚洲激情 | 国产精品久久久久久久久免费樱桃 | 欧美日韩国产欧美 | 又爽又黄axxx片免费观看 | 日韩区| 国产精品揄拍一区二区 | 久久精品国产精品青草 | 国产日韩一区二区三免费高清 | 欧美一级在线观看 | 国产日韩精品在线 | 欧美成人免费在线视频 | 欧美成人性生活 | 一区二区在线观看免费视频 | 操操日| 欧美精品在线观看 | 国产一区2区 | 精品久久久久久亚洲精品 | 日韩在线精品视频 | 一区二区三区日韩精品 | 日韩中文字幕一区二区 | 一区二区三区视频在线观看 | 日韩视频在线播放 | gogo肉体亚洲高清在线视 | 久热精品在线播放 | 久久99蜜桃综合影院免费观看 | 欧美激情一区二区 | 黑人精品| 久久国产成人 | 国产成人精品av | 欧美精品在线一区 | 国产精品观看 | 99这里只有精品视频 | 精品免费国产一区二区三区四区 | 欧美视频二区 | 国产日韩精品视频 | 国产精品精品久久久 | 成人av高清在线观看 | 久色| 超碰97免费观看 | 人妖av|