迭代Java8时更新列表中的元素

时间:2019-04-22 11:20:00

标签: java list arraylist collections java-8

我有List个对象中的Customer个。我想逐一遍遍清单和淡淡的订单。 我尝试了每种方法,但在这里必须创建新列表并在其中添加值。

class Customer{
    long id;
    int orders;
    //getters setters constructor
}

List<Customer> empList=Arrays.asList(new Customer(1,10),new Customer(2,,20));

List<Customer> empList1=new ArrayList<>();
empList.forEach(e->{
    e.orders++; //updating orders
    empList1.add(e);
}); 

有更好的方法吗?我尝试使用流,但它仅映射订单

empList.stream().map(e->{e.orders++;}).collect(Collectors.toList());

2 个答案:

答案 0 :(得分:3)

您可以使用peek

empList.stream().peek(e->{e.orders++;}).collect(Collectors.toList());

正如“ Vasanth Senthamarai Kannan”所正确指出的那样,由于您不需要修改列表的结构,因此您不需要第二个列表,

empList.forEach(e->e.orders++);

答案 1 :(得分:1)

您可以使用replaceAll()来定义incrementOrder()之类的方法

empList.replaceAll(Customer::incrementOrder);


  public Customer incrementOrder(){
    this.orders+=1;
    return this;
  }