我知道在内存而不是文件中操作数据总是更好。目前,我将所有传入数据放在一个静态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。这种方法目前工作正常,我只是想知道在这种情况下使用向量是否会更好。此外,如果您发现任何不良设计,请随时指出。谢谢!
答案 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);
}
}