【问题标题】:List manipulation logic help needed需要列表操作逻辑帮助
【发布时间】:2012-04-05 13:44:03
【问题描述】:

伙计们,

我有一段代码可以搜索一些类似的 .ser 文件并将它们加载到列表中

文件是(rulesIncr1.ser、rulesIncr2.ser、rulesIncr3.ser ......等)

现在加载我编写的所有文件,如下逻辑

String defaultfilename = "rulesincr";
int i=1;
                String incrFile;
                //THE FOLLOWING CODE WILL CHECK FOR ANY NU8MBER OF INCR RULES FILE IN THE LOCATION AND ADD THEM TO A RULE MODEL LIST
                do
                {
                    String tempincr = new Integer(i).toString();
                    incrFile = defaultfilename.concat(tempincr).concat(".ser");
                    FileInputStream fis= new FileInputStream( filePath.concat(incrFile));
                    ObjectInputStream inStreamIncr = new ObjectInputStream(fis); 
                    myRulesIncr = (List<RuleModel>)inStreamIncr.readObject();
                    i++;
                }

                while(new File(filePath.concat(incrFile)).isFile());

现在我面临的问题是每次刷新 myRulesIncr 并且最后只加载最后一个文件。我需要拥有所有加载的文件。请指教

谢谢

【问题讨论】:

    标签: java algorithm file list logic


    【解决方案1】:

    线

    myRulesIncr = (List<RuleModel>)inStreamIncr.readObject();
    

    在您的循环中将始终覆盖 myRulesIncr 变量指向的列表。如果你想将所有这些 RuleModel 实例添加到 myRulesIncr 你应该有类似的东西

    List<RuleModel> myRulesIncr = new ArrayList<RuleModel>();
    
    while{
    //your while loop without the 
    //myRulesIncr = (List<RuleModel>)inStreamIncr.readObject(); line
    myRules.addAll( (List<RuleModel>)inStreamIncr.readObject() );
    }
    

    【讨论】:

    • 感谢 Robin,但 eclipse 警告以下空指针访问:变量 myRulesIncr 在此位置只能为空
    • 那你还没有初始化变量。这个信息很清楚
    【解决方案2】:

    我不熟悉标准列表对象,但问题似乎在这里:

    myRulesIncr = (List<RuleModel>)inStreamIncr.readObject();
    

    您似乎每次都在创建一个新列表,即使不是我相信您需要递增到下一个节点,即myRulesIncr = myRulesIncr.next()

    【讨论】: