java8使用流的filter來篩選數據的實現

本文主要介紹瞭java8使用流的filter來篩選數據的實現,分享給大傢,具體如下:

package chapter1;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static java.util.stream.Collectors.groupingBy;

public class stream {
  //比如說 你需要在一個列表中 篩選出所以重量大於150的蘋果,然後按照顏色分組
  //按常規的篩選寫法 就是在循環裡面 迭代篩選

  public static void main(String[] args) {
    List<Apple> appleList = new ArrayList<>();

    //常規寫法
    Map<String, List<Apple>> AppMap = new HashMap<>();
    for (Apple apple : appleList) {
      if (apple.getWeight() > 150) { //如果重量大於150
        if (AppMap.get(apple.getColor()) == null) { //該顏色還沒分類
          List<Apple> list = new ArrayList<>(); //新建該顏色的列表
          list.add(apple);//將蘋果放進去列表
          AppMap.put(apple.getColor(),list);//將列表放到map中
        }else { //該顏色分類已存在
          AppMap.get(apple.getColor()).add(apple);//該顏色分類已存在,則直接放進去即可
        }
      }
    }

    //如上方式 就可以篩選出來所有的150克大小以上的蘋果,並按顏色分類



    //方式二 使用java8提供的流api實現 這種叫內部迭代
    Map<String, List<Apple>> AppMap2=appleList.stream().filter((Apple a)->a.getWeight()>150) //篩選出大於150的
        .collect(groupingBy(Apple::getColor)); //按顏色分組 最後得到map
    

  }


  class Apple {

    private String color;//顏色
    private Integer weight; //重量

    public String getColor() {
      return color;
    }

    public void setColor(String color) {
      this.color = color;
    }

    public Integer getWeight() {
      return weight;
    }

    public void setWeight(Integer weight) {
      this.weight = weight;
    }
  }
}

到此這篇關於java8使用流的filter來篩選數據的實現的文章就介紹到這瞭,更多相關java8 filter篩選數據內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: