当前位置: 首页 > 知识库问答 >
问题:

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

顾均
2023-03-14

我有客户对象的列表。我想迭代列表并按1递增顺序。

我尝试了每个列表,但在这里我必须创建新列表并在其中添加值。

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);
}); 

有没有更好的方法?我尝试使用streams,但它只是映射订单

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

共有2个答案

堵昊焱
2023-03-14

您可以使用replaceAll()只需定义一个类似于incrementOrder()的方法

empList.replaceAll(Customer::incrementOrder);


  public Customer incrementOrder(){
    this.orders+=1;
    return this;
  }
桂学
2023-03-14

您可以使用peek

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

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

empList.forEach(e->e.orders++);
 类似资料:
  • 我想知道,如何在Java8中使用流API迭代多级列表 根据Java8,我应该做如下的操作 我想要流利地做这件事(使用内部迭代)。任何解释都会很感激。

  • 我在迭代一个对象内的列表时遇到了一个问题,该对象内嵌在另一个映射中。我的目标是迭代这个列表并生成一个映射 ,我希望使用streams和lamdas来实现这一点。 我在上面看到了,我需要通过迭代FolderBo中的elementList从elementBo创建一个带有map 的映射。folderBo本身就在Modelbo的地图内。

  • 下面的代码尝试迭代excel文件,并将数据加载到

  • 我有一个映射,它包含日期作为键和(另一个字符串作为键和列表作为值的映射)作为值。,我想填充另一个将String作为键和double作为值的映射。FlexiServer的内容包括 因此,基本上,我想首先迭代外部映射以获得内部映射,然后迭代内部映射以获得FlexiServers列表,并填充新的映射,其中服务器号作为键,数量列表作为值。我如何使用Java8流来实现这一点呢? 我尝试使用for循环,但我希

  • 我有两份清单: 列表1: Object1(name1, id1) 列表2: Object2(name2, id2) 给定list1的大小与list2相同 我想迭代list2,如果list2的name2不为null,则更新list1的name1。 以下是使用旧java的代码: 用java实现这一点的最佳方法是什么。util。流动

  • 问题内容: 我知道在迭代列表时不允许删除元素,但是在迭代时允许将元素添加到python列表中。这是一个例子: 我已经在我的代码中尝试过了,它似乎可以正常工作,但是我不知道是否是因为我很幸运,将来它会折断吗? 编辑:我不愿复制列表,因为“ myarr”很大,因此会太慢。另外,我需要使用“ somecond()”检查附加对象。 编辑:在某些时候“ somecond(a)”将为假,因此不能有无限循环。