有没有办法或者是否有任何可用的java库可以让我遍历所选的列表项目(不是全部)满足条件?
例如:我有一份员工清单,我想要遍历只有经理的员工名单。我不想提出条件或过滤器但只想遍历经理列表。
为此,我可以在创建列表时定义条件。因此,每当我将一个项目添加到列表中时,指向满足条件的列表项的指针将保存在另一个列表中。
这就像为原始列表提供另一个视图。
虽然可以使用过滤器完成,但我必须基本上访问每个列表项,比较然后处理。
它可能会有内存开销,因为它会为每个条件维护额外的列表,但我相信它会缩短处理时间。
我希望我的列表平均不会包含超过30个项目。
更新
经过一番头脑风暴,我提出了以下解决方案。
View<T>
List<T>
boolean checkCondition(T);
boolean updateView(T);
managerView
boolean checkCondition(T){
return token.getDesignation == designation.MANAGER;
}
salaryView
boolean checkCondition(T){
:
}
ViewableList<T> list
list.addView(managerView)
list.addView(salaryView)
ViewableList<T>
List<View<T>> views;
add(T){
originalList.add(T);
foreach views{
if(view.checkCondition(T)){
view.add(T);
}
}
}
addView(View){
views.add(view)
}
我可以轻松实现插入,搜索和删除操作。但是当更新对象的视野时,我仍然难以更新视图。
可能的解决方案
我注释列表项的字段;写一个方面。因此,每当注释字段的值发生更改时,它都可以调用相应视图的updateView()。
Employee{
@View(type=DesignationView.class)
Designation designation;
}
但是有可能在构造多个视图时使用了一个字段。所以我必须在@View注释中传递视图类列表,这看起来很奇怪。而且,我想避免因性能而使用反射和方面。否则,付出所有这些努力是没有任何意义的。
请知道您是否知道如何实施它。
答案 0 :(得分:0)
使用Map会不会更好。在此映射中,键可以是类别,值将列出。因此,当遍历只获取该密钥的条目时。
答案 1 :(得分:0)
你怎么期望这样的事情被编码为如此通用,以至于它作为通用库而不是特定于你非常狭隘的要求有用呢?
这是唯一一种实现,当然作为一个独立的库发布是一个明智的想法
所以不,这样的事情不会存在。你将不得不创建一些自己的代码。