内存中的数据操作

时间:2014-05-02 18:33:07

标签: java vector arraylist data-management

我知道在内存而不是文件中操作数据总是更好。目前,我将所有传入数据放在一个静态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>();
    }
}

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

2 个答案:

答案 0 :(得分:1)

在绝大多数情况下,使用ArrayList就足够了。主要区别在于Vector是线程安全的,而ArrayList不是,但是当您不使用多个线程时,没有理由更喜欢Vector而不是ArrayList代码中的1}}

答案 1 :(得分: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);
    }
}