【问题标题】:How to apply a math function to each object of an ArrayList [duplicate]如何将数学函数应用于ArrayList的每个对象[重复]
【发布时间】:2016-09-28 20:43:17
【问题描述】:

我无法弄清楚如何对 ArrayList 的每个项目应用数学运算。 ArrayList 将由用户输入,因此不知道其中有多少项目。有没有一种方法可以帮助做到这一点?

【问题讨论】:

标签: java jgrasp


【解决方案1】:

使用ListIterator -> https://docs.oracle.com/javase/7/docs/api/java /util/ListIterator.html

与普通的Iterator 不同,ListIterator 将允许您将新计算的值存储回列表中

ArrayList<Integer> source = ...

ListIterator<Integer> iter = source.listIterator();

while( iter.hasNext() )
{
  Integer value = iter.next();

  Integer newValue = Integer.valueOf( value.intValue() * 2 );

  iter.set(newValue);
}

【讨论】:

    【解决方案2】:

    正如@puhlen 所说,在 java 8 中,使用流和 lambda 表达式

    List liste = new ArrayList<>();
    liste.stream().forEach(o->{
        //apply your math on o
    });
    

    stream 为您提供了许多其他功能来过滤、排序、收集...如果您使用的是 java8,请使用它

    或者正如@neil-locketz 在java 8 之前所说的那样使用foreach 循环

     List<type> liste = new ArrayList<>();
    for(type o : liste){
        //math on object o here
    }
    

    【讨论】:

    • 实际上,该代码不会做任何事情。
    • 您的流代码什么都不做,因为没有终止方法。也就是说,在终止方法(例如collect()reduce() 等)请求下一个元素之前,不会调用map()。如果没有终止方法,实际上不会触发任何代码。
    • 对不起,我认为 forEach 和我写地图...已编辑
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 2022-06-12
    • 2020-12-31
    • 2017-10-08
    • 2013-04-23
    • 2020-08-16
    相关资源
    最近更新 更多