繁体   English   中英

如何更改数组列表中的整数而不丢失其在该列表中的顺序

[英]How to change an integer from an arraylist without it losing its order in that list

所以我想从数组列表中的特定数字中减去 1。 但是,按照它下面的方式进行操作会使它失去对下一个数字的位置。

      int x = 0;    
      ArrayList<Integer> values = new ArrayList<>();   
      values.add(4);
      values.add(8);
      x = values.get(0) - 1;
      values.remove(0);
      values.add(x);

当我删除第一个时,如何改变values.get(0)而不让values.get(1)得到它的位置?

我相信您想通过减去一个来更新第一个值。 也就是说, 4应该变成3并且values应该从4,8变为3,8 您应该调用List.set(int, E)而不是remove 喜欢,

values.set(0, values.get(0) - 1);
System.out.println(values);
    ArrayList<Integer> values = new ArrayList<>();
    values.add(4);
    values.add(8);
    values.set(0,values.get(0)-1);

您可能想要使用Java 流 方法是:获取x的索引,并使用它来将值设置回 List 中的位置。 如果只想减去某个index ,可以使用.filter

    List<Integer> values = new ArrayList<Integer>();
    values.add(4);
    values.add(8);

    values.stream().forEach(x -> {
        values.set(values.indexOf(x), x - 1);
    });
    System.out.println(values); // [3, 7]

注意:如果使用enhanced for loop您可以获得java.util.ConcurrentModificationException

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM