现在我想知道你们是否可以帮助我将ArrayList序列化到文件上。现在我正在从学校进行总结,但是我没有真正的编码问题。我正在制作的是GUI通讯录,当用户添加地址时,它会存储到arraylist中并添加到comboBox中。那就是我在做什么。我要问的是您是否可以序列化Arraylist。如果可以的话,你们能教我怎么做吗?或者至少给我一些教程?
非常感谢。如果你们需要在回答之前先看代码,请让我知道,我会显示出来。再次,谢谢你。
好的,这是我的整个代码:
import java.awt.EventQueue;
public class Address_Book {
private JFrame frame;
private JTextField newName;
private JTextField newAddress;
private JTextField newPhoneAddress;
ArrayList<Book> test = new ArrayList<Book>();
/**
* 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 < 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);
}
}
这是我的目标:
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()) < 0){
return(-1);
}else if(testBook.getFlName().compareTo(this.getFlName()) == 0){
return(0);
}else{
return(1);
}
}
}
现在,我再次不确定如何继续使Arraylist可序列化。我使用过对象,但没有使用Arraylists,所以我不知道它是否是同一过程。我只是在寻求建议,或者是一些使ArrayLists可序列化的出色教程。
从这里的ArrayList
文档:
所有已实现的接口:可 序列化 ,可克隆,可迭代,集合,列表,RandomAccess
是的,它是可序列化的。就像在Java中使用任何其他流一样,这样做非常容易,只需查看ObjectOutputStream
和即可ObjectInputStream
。
问题内容: 我在流程之前有这个: 然后在另一部分 为什么我收到ClassCastException? 问题答案: 最终我以这种方式工作:
我有以下JSON文件要反序列化
情况:我希望使用ObjectOutputStream将一组对象(不同类型)从客户端发送到服务器。 问题:对象数组不可序列化(我得到一个not serializable异常)。 我尝试了什么:我创建了一个扩展Object并实现Serializable的虚拟类。但是我不能将原始对象数组强制转换为此类。 是否有任何方法可以序列化对象数组?
问题内容: 这是基本代码: 我努力了: 和: 而且都不起作用。有人有主意吗? 问题答案: 该代码对我有用:
问题内容: 我正在尝试在Java FX下开发一个拖放应用程序。用户将在某些位置放置JFX组件,例如按钮,菜单,标签。完成后,他将保存此布局,稍后再重新打开该布局,然后将再次使用它。 重要的是存储有关放置在某个位置的所有对象的信息。 我决定为此目的使用序列化。但是我无法序列化JavaFX组件。我试图序列化Buttons,Scenes,Stages,JFXPane,但似乎没有任何效果(我获得了NotS
问题内容: 是否可以使Java中的2D数组可序列化? 如果没有,我正在寻找将3x3 2D数组“翻译”为向量的向量。 我一直在玩矢量,但我仍然不确定如何表示。谁能帮我? 谢谢! 问题答案: Java中的数组是可序列化的,因此数组数组也可以序列化。 但是,它们所包含的对象可能不是,因此请检查数组的内容是否可序列化-如果不是,则使其可序列化。 这是一个使用整数数组的示例。 输出: