将对象保存到文件。 "删除对象",但在统计和历史搜索中找到它。更新

时间:2015-04-24 13:34:02

标签: java object objectinputstream objectoutputstream

我正在创建一个保险学校项目,我应该能够创建一个新的客户,添加保险(房子,汽车,船等)并保存到文件。我正在使用

public void skrivTilFil(HashMap hm)  {
    if ( hm != null ) {
        try (ObjectOutputStream utStream = 
                new ObjectOutputStream(
                    new FileOutputStream(filename))) {
            utStream.writeObject (hm);

问题是我应该能够删除对象(房屋,汽车保险,客户本身等)但我必须有历史和统计搜索,其中对象和删除的对象都显示。

我考虑过保存到两个不同的文件,并从一个文件中删除。含义我删除了一个文件,历史记录和统计搜索有另一个文件。但我绝对不允许双重保存。所以我理解它所以我只能有一个文件因此无法删除对象。

我还考虑过一个布尔值,其中" false" = show," true" = deleted。然后只显示" show-objects"而不是" deleted"必要的时候," false"和" true"在搜索历史和统计数据时。

所以我做了这个方法:

public void eraseCustomer( int insurancenr )
{
    Iterator<Map.Entry<Integer, Person>> iterator = vindu.register.personTM.entrySet().iterator() ;
    while(iterator.hasNext())
    {
        Map.Entry<Integer, Person> insuranceNrEntry = iterator.next();
        if( insurancenr == insuranceNrEntry.getKey())
        {
            Vindu.setUtskriftsomraadet("Found person " +     insuranceNrEntry.getValue() );

JOptionPane.showMessageDialog(null, "arrived at eraseCustomer");

}

运行此代码表明我获得了一个值,例如&#34; Person @ 2936643&#34;。 我需要的是获取person / object的名称(String lastname)并将该personboolean设置为true。 我有一个保险钥匙找到这个人。 所以1: 是否可以使用boolean = true更新该personobject是一种简单的方法,还是我必须创建一个新对象然后用我找到的对象替换它?我只需要更改布尔值,而不是名称,生日等。
2: 如何获取对象的名称而不是Person @ 2936643?

事情是,这是我的知识...你对我如何做到这一点有任何提示或建议,非常感谢!

(我是挪威语,所以请原谅我的英语不好)

0 个答案:

没有答案