Java类Vectors运行太慢

时间:2018-09-28 20:59:40

标签: java

这是我的三个班级,如下:

Array_List.java:

import java.util.*;

public class Array_List {
public long startTime, difference = 0;
public ArrayList<Integer> a;

    public Array_List() {
        a = new ArrayList<Integer>();
    }

    public void buildArray() {
        startTime = System.currentTimeMillis();
        while (difference <= 10000) {
            int r = (int)(Math.random()*10);
            a.add(r);
            difference = System.currentTimeMillis() - startTime;
        }
    }
}

此类创建一个数组列表并对其创建进行计时。

在下一个Java类中,我使用Array_List的大小初始化向量类的大小。我希望它们的大小相同,以便可以比较速度。由于我使Array_list的大小取决于它的速度。然后,我可以使用相同的大小比较向量。

Vectors.java:

import java.util.*;

public class Vectors {

    public long startTime, difference = 0;
    public Vector<Integer> a;

    public Vectors(int size) {
        a = new Vector<Integer>(size);
    }

    public void buildVectors() {
        int i=0;
        startTime = System.currentTimeMillis();
        while(i<=a.size()) {
            int r = (int)(Math.random()*10);
            a.add(r);
            difference = System.currentTimeMillis() - startTime;
            i++;
        }
    }
}

下一类将同时运行这两种方法。

performanceOfArrays.java:

import java.util.*;

public class performanceOfArrays {

    public static Array_List arrayList;
    public static Vectors vectors;

    public static void main(String[] args) {

        arrayList = new Array_List();
        arrayList.buildArray();

        S.ystem.out.println("Testing the speed of an array list:");

        System.out.print("The speed of composing an array list with " + arrayList.getSize());
        System.out.print(" integers is " + arrayList.getSpeed() + " seconds.");

        vectors = new Vectors(arrayList.getSize());
        vectors.buildVectors();

        System.out.print("Testing the speed of a vector:");

        System.out.println("The speed of composing a vector with " + vectors.getSize());
        System.out.print(" integers is " + vectors.getSpeed() + " seconds.");
    }
}

我不断遇到Vectors.java的内存和速度问题。我知道这与我的buildVectors()方法有关。似乎该方法不会停止。

任何帮助您做什么的事情,将不胜感激。

1 个答案:

答案 0 :(得分:1)

在用于矢量的代码中,您使用while (i < a.size()),但随后调用a.add(),这会将元素添加到矢量并增大其大小。因此,您的while循环永远不会结束。

如果您知道要添加的元素数量,则最好使用for循环。

BTW向量将所有方法都标记为已同步,因此无论如何都要慢于arraylist