成人免费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 命令

2022-11-21 17:58:23

編程語言技巧

2021-08-17 10:08:44

HTML網站網絡

2022-04-14 10:40:11

領導者IT團隊遠程團隊

2023-05-30 09:59:38

2018-05-24 08:47:15

數據存儲技巧

2019-09-09 10:32:51

基于意圖的網絡IBN網絡

2016-12-13 10:06:25

編寫Java單元測試技巧

2024-11-08 16:24:39

2023-12-15 08:51:48

2015-11-30 17:12:31

Git使用技巧

2012-09-17 10:57:39

郵件安全

2022-08-26 08:00:00

數字時代IT首席信息官

2021-12-17 10:29:38

CIOITCFO

2021-06-10 08:00:00

首席信息安全官IT數據

2021-03-02 10:54:08

高管IT投資首席信息官

2023-04-19 15:29:53

通信技巧Vue 3開發

2022-07-14 10:34:13

IT領導者CIO首席信息官
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一级黄色在线 | 精品在线观看一区 | 雨宫琴音一区二区在线 | 自拍偷拍亚洲视频 | 精品国产鲁一鲁一区二区张丽 | 欧美二区乱c黑人 | 国产成人精品午夜 | 99精品欧美一区二区蜜桃免费 | 国产精品日日摸夜夜添夜夜av | 精精国产xxxx视频在线野外 | 一片毛片| 日韩精品国产精品 | 国产精品亚洲第一区在线暖暖韩国 | 欧美日韩成人在线 | 成人毛片视频免费 | 亚洲电影在线播放 | 亚洲国产18 | 天堂色区 | 久久久国产精品 | 黄色大片免费播放 | 国产成人精品一区二 | www97影院| 成人在线免费看 | 国产视频久 | 不卡一区| 久久久久成人精品免费播放动漫 | 日韩在线视频一区二区三区 | 国产成人精品一区二区三区在线 | 欧美一级做a爰片免费视频 国产美女特级嫩嫩嫩bbb片 | 免费毛片在线 | 国产激情一区二区三区 | 久久久久久久久99精品 | 日韩欧美中文字幕在线观看 | av网站免费在线观看 | 成人av免费播放 | 国产精品国产精品国产专区不卡 | 国产乱码一区 | 日韩中文字幕 | 有码在线 | 日操夜操| 在线成人|