以适当的OOP方式存储数据

时间:2016-05-19 21:11:43

标签: java swing oop

目前,我已经编写了一个程序,允许用户将数据添加到JTable,将JTable内容保存到txt文件并从文件加载数据。我的txt数据文件如下所示:

 Apple;Food;50
 ####
 Vibrador;Electronics;125
 ####

我想为进一步的搜索选项添加时间戳,虽然通过迭代整个文件并选择每个第4项(例如)过滤数据不是一种有效的方法(我可以为每1个文件分隔1列) ,但等一下...... OOP?)。所以我的问题是如何以OOP方式实现我的数据?

Save file method and screenshot of jFrame

感谢您的时间!

1 个答案:

答案 0 :(得分:0)

您应该为记录创建一个模型类:

模型类

class Record
{
   private String item;
   private String category;
   private int quantity; 
   private String timestamp

   // constructor
   public Record (String item, String category, int quantity, String timestamp)
   {
       this.item = item;
       // assign rest of members...
   }

   public String getCategory ()
   {
       return category;
   }

   // rest of getters and setters for all members...
}

接下来,让一个解析器类读取txt文件并创建一个Record对象列表。您的解析器可以返回这样的列表:

List<Record> records = new ArrayList<Records>();

搜索

当您想要搜索数据时,只需遍历列表并收集匹配项。例如,如果要查找“食物”类别中的所有项目,可以执行以下操作:

String searchCategory = "food";
List<Record> matches = new ArrayList<Records>();

for (Record r : records)
{
    String currentCategory = r.getCategory();

    // this will do case-insensitive matches
    if (currentCategory.equalsIgnoreCase(searchCategory))
    {
        matches.add(r);
    }
}