java - 读写对象链表

标签 java arraylist

我是 Java 初学者。我遇到的问题之一是在不同的类中使用数组列表。 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。 我不知道如何在不加载每个类中的相同文件的情况下执行此操作,我需要 ArryList 以及文件中的加载内容

最佳答案

您应该为您需要的每个导入它。但是,如果您非常频繁地使用ArrayList并且仅使用ArrayList,那么您可以创建一个,例如:

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

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

关于java - 读写对象链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27207870/

相关文章:

java - 如何将包含 POST 请求中的文件的 MultiValueMap 发送到 Spring rest web 服务?

java - 在 ListView 中填充 ArrayList

java - 将速度日志记录更改为控制台

java - 导致此异常 "HTTP 500 Erreur Interne de Servlet"的可能原因是什么?

java - 将多个计数器整数及其各自的对象保存在一个有序的数据结构中?

java - Android列表(ArrayList、List等): addAll() vs redefining reference

java - 如何将两个数组列表的对象在指定索引处相互传递

Java ArrayList 删除元素恢复浪费的空间?

java - 根据偏好对一群人进行排序

java - 如何按位运算? (运算符 & 不能应用于 Integer 或 int)