Обновите элемент в списке во время итерации Java8 - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть 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 ]

3 голосов
/ 22 апреля 2019

Вы можете использовать peek

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

Также, как правильно указано "Vasanth Senthamarai Kannan", вам не нужен второй список, так как вы не изменяете структуру списка,

empList.forEach(e->e.orders++);
1 голос
/ 22 апреля 2019

вы можете использовать replaceAll(), просто определите метод как incrementOrder()

empList.replaceAll(Customer::incrementOrder);


  public Customer incrementOrder(){
    this.orders+=1;
    return this;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...