【发布时间】:2016-05-11 06:13:39
【问题描述】:
我编写了一个 java 程序,它将列表中的每个数字乘以一些常量。下面是程序。我创建了一个 myNewNumbers 列表来存储这些相乘的数字。以下是我的疑问
有没有更好的方法来以最小的时间复杂度写这个? 目前在我的 for 循环中有 10 个元素。如果用户想要为 100 万个元素执行此操作,如何处理? 我是多线程的初学者。我如何确保它在多线程中工作
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MultiplyHugeNumber {
static List<Integer> mynumbers;
static List<Integer> myNewnumbers;
static Integer MUTIPLY_ELEMENT=2;
public static void main(String[] args) {
// TODO Auto-generated method stub
mynumbers= new ArrayList<Integer>();
for (int i = 0; i < 10; i++) {
mynumbers.add(i);
}
System.out.println(Arrays.toString(mynumbers.toArray()));
myNewnumbers= new ArrayList<>();
for (Integer mynumber : mynumbers) {
myNewnumbers.add(mynumber*MUTIPLY_ELEMENT);
}
System.out.println(Arrays.toString(myNewnumbers.toArray()));
}
o/p:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
【问题讨论】:
-
哦,看,过早的优化。我们生活在 2016 年,而不是 1980 年,您的计算机可以处理数百万次乘法运算。
-
多线程与时间复杂度无关。无论是否使用多个线程,您都必须处理一次所有元素,因此您的时间复杂度将为
O(n)。可能是您将它与并行处理混合以减少总执行时间。
标签: java multithreading arraylist