0

我知道在内存而不是文件中操作数据总是更好。目前,我将所有传入数据放在一个静态 ArrayList 中,当该 ArrayList 有超过 80 个条目时,我的程序会将这个 ArrayList 的内容保存到一个文件中,并为下一波传入数据清理这个数组。

我想知道使用 Vector 而不是 ArrayList 是否更好(或更糟)。如果有区别,哪个更好/更差?在什么情况下?

这是我的相关代码:

public class Exchange () {
    private static ArrayList<String> datain = new ArrayList<String> ();
    public static void addData(String s) {
        datain.add(s);
    }

    public static boolean checkSize() {
        if (datain.size() >= 80)
            return true;
        else
            return false;
    }

    public static void writeData() throws FileNotFoundException {
        PrintWriter pw = new PrintWriter(new File ("myfile.txt"));
        for (int i = 0; i < datain.size(); i++) {
            pw.println(datain.get(i);
        }
        pw.close();
    }

    public static void clear() {
        datain = new ArrayList<String>();
    }
}

PS这种方法目前效果很好,我只是想知道在这种情况下使用向量是否会更好。此外,如果您发现任何不良设计,请随时指出。谢谢!

4

2 回答 2

1

在绝大多数情况下,使用ArrayList就足够了。主要区别在于它Vector是线程安全的,虽然ArrayList不是,但是看到你没有使用多个线程,没有理由VectorArrayList你的代码中更喜欢

于 2014-05-02T18:35:10.917 回答
0

除非我知道存在性能问题,否则我会这样做。大部分成本是文件的打开和关闭,所以我会避免这样做。我还假设附加是您想要的。

public enum Logging {
    ; // no instances
    public static final String FILE_NAME = "myfile.txt";
    private static final PrintWriter pw;

    static {
        try {
            pw = new PrintWriter(new FileWriter(FILE_NAME, true));
        } catch (IOException ioe) {
            throw new AssertionError(ioe);
        }
    }

    public static void addData(String s) {
        pw.println(s);
    }
}
于 2014-05-02T18:43:56.633 回答