读写对象的链接列表

时间:2014-11-29 22:31:49

标签: java arraylist

我是Java的初学者。我遇到的一个问题是在不同的类中使用arraylist。 MainWindow类将文件读取到arraylist

public class MainWindow extends javax.swing.JFrame {

ArrayList <Product> pl;
List<Product> list = new ArrayList<>();

boolean test = false;

ObjectOutputStream oos;
ObjectInputStream ois;

private String file ="C://temp//Data.dat";
String number ="";


public MainWindow() {
    initComponents();
    pl = new ArrayList<>();
    try {
        ois = new ObjectInputStream(new FileInputStream(file));
        do{
            list = (ArrayList<Product>) ois.readObject();
            for(int i =0; i < list.size(); i++){
                pl.add(list.get(i));

            }
            for(Product px : pl){
                number = px.getpNumber();
                System.out.println(px);
                System.out.println(number);

            }
            System.out.println(pl);

            //System.out.println(table);
        }

        while(test = false);


    } catch (FileNotFoundException ex) {
        Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
        System.out.println("file not founf");
    } 
    catch (EOFException ex){
        System.out.println("end of file");
        ex.printStackTrace();
        test = true;
    }

    catch (IOException | ClassNotFoundException ex) {
        Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
        System.out.println("class not found");
    }
    finally{
        try {
            ois.close();
        } catch (IOException ex) {
            Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
public ArrayList<Product> getProduct(){
    return pl;

private void addPanelActionPerformed(java.awt.event.ActionEvent evt) {                                         
   addPanel ap;
     try {
         ap = new addPanel();
         ap.setVisible(true);
     } catch (ClassNotFoundException ex) {
         Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
     }
}       

我想使用相同的Arraylist pl将新产品添加到列表中而不会覆盖ArrayList。 我不知道如何在不加载每个类的相同文件的情况下执行此操作我需要使用带文件中的loade内容的ArryList

1 个答案:

答案 0 :(得分:0)

您应该为您需要的每个class导入它。但是,如果您经常使用ArrayList而只使用ArrayList,则可以创建class,例如:

public class MySharedArrayList {
    public static ArrayList<> pl;
}

然后你可以在任何地方导入这个小文件,但我相信我们过度思考它。不要过早优化。这个微观问题可能永远不会出现,因此处理它可能是浪费时间。