title: Serializing Arraylists
body: <p>Now I am wondering if you guys could help me on serializing an ArrayList onto a file.  Now I am working on a summative from school, however there is no real coding problem I am having.  What I am making is a GUI address book, and when a user adds an address it is stored into an arraylist and added to the comboBox.  That is what I am doing.  What I am asking is if you can serialize Arraylists.  If you can, can you guys teach me how?  Or at the very least give me some tutorials?</p>
  
  <p>Thank you so much.  If you guys need to see code before answering, just let me know and I will show it.  Again, thank you so much.</p>
  
  <p>Okay here is my entire code:</p>
  
  <pre><code>import java.awt.EventQueue;
  
  
  public class Address_Book {
  
      private JFrame frame;
      private JTextField newName;
      private JTextField newAddress;
      private JTextField newPhoneAddress;
      ArrayList&lt;Book&gt; test = new ArrayList&lt;Book&gt;();
  
      /**
       * Launch the application.
       */
      public static void main(String[] args) {
          EventQueue.invokeLater(new Runnable() {
              public void run() {
                  try {
                      Address_Book window = new Address_Book();
                      window.frame.setVisible(true);
                  } catch (Exception e) {
                      e.printStackTrace();
                  }
              }
          });
      }
  
      /**
       * Create the application.
       */
      public Address_Book() {
          initialize();
      }
  
      /**
       * Initialize the contents of the frame.
       */
      private void initialize() {
          frame = new JFrame();
          frame.setBounds(100, 100, 371, 262);
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.getContentPane().setLayout(null);
  
          final JComboBox comboBox = new JComboBox();
          final DefaultComboBoxModel model = new DefaultComboBoxModel();
  
          newName = new JTextField();
          newName.setBounds(10, 29, 79, 20);
          frame.getContentPane().add(newName);
          newName.setColumns(10);
  
          JLabel lbl1 = new JLabel("Enter New Name:");
          lbl1.setBounds(10, 11, 107, 14);
          frame.getContentPane().add(lbl1);
  
          JLabel lbl2 = new JLabel("Enter New Address:");
          lbl2.setBounds(110, 11, 107, 14);
          frame.getContentPane().add(lbl2);
  
          newAddress = new JTextField();
          newAddress.setColumns(10);
          newAddress.setBounds(109, 29, 96, 20);
          frame.getContentPane().add(newAddress);
  
          newPhoneAddress = new JTextField();
          newPhoneAddress.setColumns(10);
          newPhoneAddress.setBounds(215, 29, 130, 20);
          frame.getContentPane().add(newPhoneAddress);
  
          JLabel lbl3 = new JLabel("Enter New Phone number:");
          lbl3.setBounds(215, 11, 140, 14);
          frame.getContentPane().add(lbl3);
  
          JButton btnAddNewContact = new JButton("Add new contact");
          btnAddNewContact.addMouseListener(new MouseAdapter() {
              @Override
              public void mousePressed(MouseEvent arg0) {
                  test.add( (new Book(newName.getText(), newAddress.getText(), newPhoneAddress.getText())));
                  //mergesort.mergesort(test, 0, test.size() - 1);
                  model.removeAllElements();
                  for(int i=0; i &lt; test.size();i++){
                      model.addElement(test.get(i).getContact()); 
                  }
                  comboBox.setModel(model);
                  newName.setText(""); 
                  newAddress.setText("");
                  newPhoneAddress.setText("");
              }
          });
          btnAddNewContact.addActionListener(new ActionListener() {
              public void actionPerformed(ActionEvent arg0) {
              }
          });
          btnAddNewContact.setBounds(10, 53, 335, 23);
          frame.getContentPane().add(btnAddNewContact);
  
          JLabel lbl4 = new JLabel("Current Contacts:");
          lbl4.setBounds(10, 87, 107, 14);
          frame.getContentPane().add(lbl4);
  
          comboBox.setModel(model);
          comboBox.setBounds(10, 101, 335, 20);
          comboBox.setSelectedIndex(test.size()-1);
          frame.getContentPane().add(comboBox);
      }
  }
  </code></pre>
  
  <p>and here is my object:</p>
  
  <pre><code>public class Book implements Comparable {
       private String flName, Address, pNumber;
  
      public Book(String Name, String address, String phoneNumber ){
          setFlName(Name);
          setAddress(address);
          setpNumber(phoneNumber);
      }
  
      public String getpNumber() {
          return pNumber;
      }
  
      public void setpNumber(String pNumber) {
          this.pNumber = pNumber;
      }
  
      public String getAddress() {
          return Address;
      }
  
      public void setAddress(String address) {
          Address = address;
      }
  
      public String getFlName() {
          return flName;
      }
  
      public void setFlName(String flName) {
          this.flName = flName;
      }  
  
      public String getContact() {
          return flName + " " + Address + " " + pNumber;
      }
  
      public int compareTo(Object c) {
          Book testBook = (Book)c;
  
          if (testBook.getFlName().compareTo(this.getFlName()) &lt; 0){
              return(-1);
          }else if(testBook.getFlName().compareTo(this.getFlName()) == 0){
              return(0);
          }else{
              return(1);
          }
      }
  
  }
  </code></pre>
  
  <p>Now, again, I am unsure of how to proceed to make Arraylists serializable.  I have used objects, but not Arraylists, so I do not know whether or not it is the same process.  I am just merely asking for advice, or some great tutorials on making ArrayLists serializable.</p>