【发布时间】:2017-08-15 07:58:39
【问题描述】:
假设我有一个列表List<Foo> mylist = parseFromCSV();
在哪里
parseFromCSV()
返回Foo 类的对象列表。 Foo 类有她的私有属性:
private mailId;
private status;
... getter 和 setter...
可能是一对对象
mylist: [{MailId=100, Status=BOUNCED, EMAIL=test@test.com},{MailId=100, Status=OPENED, EMAIL=test2@test.com}, {MailId=200, Status=CLICKED, EMAIL = test3@test.com}, {MailId=100, Status=HARDBOUNCED, EMAIL = test4@test.com}]
我的列表中确实可以有重复项,因为列出的对象代表解析为 Java 对象的 CSV 行。 每个 MailId 都有多种不同的可能反馈状态。
我感兴趣的是在我的一组可能状态中为一个 MailId 仅检索 “重要”状态,并将其保存到我的数据库中。
已打开 > 单击 > HARDBOUNCED > BOUNCED(状态的优先级)。
在我的示例中:对于 MailId= 100,我只会将 OPENED 状态保存到数据库中的状态列中。
什么是实现这一目标的好方法?我应该创建一个新的列表(设置?),其中包含每对过滤的 {MailId, Status(Prioritized)}, ... {MailIdN, StatusN(Prioritized)...} 吗?我们可以使用枚举为字符串添加优先级,或者为我的 Foo 类对象创建一个新的比较器吗?
使用hibernate对mysql数据库的持久化操作应该是这样的:
persistStatusIntoTable(String MailId, String Status(Taken only status based on priority))
感谢大家的帮助!
【问题讨论】:
-
我建议将状态作为其自己的单独类,该类具有私有 int 优先级(或类似的东西),使用自定义 Comparator
也可以,但可能很难如果您添加更多状态,请制作。 (在一些奇怪的情况下。)然后创建一个新 List 并将 myList 中的所有元素添加到它,这些元素通过您的状态优先条件。 -
我认为把它变成一个单独的类是个坏主意,因为状态代表我的实体类 FeedBackReceived 的一个字段。我想我应该像你说的那样继续制作自定义 Comparator
。我可以拥有的可能状态都设置为我提到的那些。比较器将是通用的,并适用于具有不同类型对象的其他现有列表,其中还包括状态。我有 List 、List 、List 代表不同的电子邮件帐户 -
感谢您的回答和时间。 @Dolev 你对桌子是什么意思?数据库表?
标签: java hibernate data-structures java-8 reduce