如何在java中组合两种类似的方法?
我有两种方法,它们的条件不同。那么,我如何将两种方法结合成一种呢
private void filterById(String keyW) {
neModel.setRowCount(0);
for (int i = neList.size() - 1; i > -1; i--) {
//CONDITION:
if (String.valueOf(neList.get(i).getId()).toLowerCase().contains(keyW.toLowerCase())) {
Object[] aRow = createARow(i);
neModel.addRow(aRow);
}
}
}
private void filterByTitle(String keyW) {
neModel.setRowCount(0);
for (int i = neList.size() - 1; i > -1; i--) {
//CONDITION:
if (neList.get(i).getTitle().toLowerCase().contains(keyW.toLowerCase())) {
Object[] aRow = createARow(i);
neModel.addRow(aRow);
}
}
}
*“neList”是“新闻”的列表 类“News”具有以下属性:id、标题、文本等
# 1 楼答案
在Java8+中,您可以尝试使用功能接口,并将差异作为一种策略进行传递
类似这样的东西(未经测试,因为我没有编译器):
或者,在提供整个条件的
Predicate<T>
中使用Function<T, S>
过程来代替if(predicate.test(neList.get(i))) { ... }
编辑:根据OP的评论,将
T
替换为News
# 2 楼答案
在相同的if中,可以在条件之间放置| |(或)运算符
如果索引冲突,则多使用一个索引变量进行管理
# 3 楼答案
# 4 楼答案
如果不想使用函数参数,只需创建一个方法,其中包含一个与所需过程相对应的额外参数
这个额外的参数可以是枚举,或者如果只有两种情况1布尔标志:
现在这样称呼它:
或者