streamVScollection

1.首先創建一個對象

public class Dish {

    private final String name;
    private final boolean vegetarian;
    private final int calories;
    private final Type type;

    public Dish(String name, boolean vegetarian, int calories, Type type) {
        this.name = name;
        this.vegetarian = vegetarian;
        this.calories = calories;
        this.type = type;
    }

    public String getName() {
        return name;
    }

    public boolean isVegetarian() {
        return vegetarian;
    }

    public int getCalories() {
        return calories;
    }

    public Type getType() {
        return type;
    }

    public enum Type { MEAT, FISH, OTHER }

    @Override
    public String toString() {
        return name;
    }

    public static final List<Dish> menu =
            Arrays.asList( new Dish("pork", false, 800, Dish.Type.MEAT),
                           new Dish("beef", false, 700, Dish.Type.MEAT),
                           new Dish("chicken", false, 400, Dish.Type.MEAT),
                           new Dish("french fries", true, 530, Dish.Type.OTHER),
                           new Dish("rice", true, 350, Dish.Type.OTHER),
                           new Dish("season fruit", true, 120, Dish.Type.OTHER),
                           new Dish("pizza", true, 550, Dish.Type.OTHER),
                           new Dish("prawns", false, 400, Dish.Type.FISH),
                           new Dish("salmon", false, 450, Dish.Type.FISH));
}

2.集合遍歷值iterator

List<String> names = new ArrayList<>(); 
	Iterator<String> iterator = menu.iterator(); 
	while(iterator.hasNext()) {      
		Dish d = iterator.next();     
		names.add(d.getName()); 
		} 

3.通過用流的方式

List<String> names = menu.stream()                          
						.map(Dish::getName)                           
						.collect(toList()); 

總結:

Streams庫的內部迭代可以自動選擇一種適 合你硬件的數據表示和並行實現。與此相反,一旦通過寫for-each而選擇了外部迭代,那你基 本上就要自己管理所有的並行問題了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章