【发布时间】:2021-09-17 05:34:06
【问题描述】:
我有两种服务方法,除了实体和可运行类型之外,它们几乎相同。
有没有办法加入他们?
我认为泛型可能会有所帮助,但不知道如何在此处应用它们
public class PoliceService {
private static final int API_REQUEST_PER_SEC = 15;
private static final ExecutorService apiExecutor = Executors.newFixedThreadPool(API_REQUEST_PER_SEC);
public void downloadAllCrimesInDateRange(Map<String, String> map) {
// Duplicate variables from map here
List<Station> list = new ArrayList<>();
CsvParser.getLinesFromCsvFile(file)
.forEach(strings -> list.add(new Station(strings[0], strings[2], strings[1])));
for (int i = 0; i <= months; i++) {
LinkedBlockingQueue<Station> queue = new LinkedBlockingQueue<>(list);
for (int j = 0; j < queue.size(); j++) {
apiExecutor.submit(new CrimeTask(queue.remove(),
from.plusMonths(i),
writeFile));
}
}
}
public void downloadStopAndSearch(Map<String, String> map) {
// Duplicate variables from map here
List<Force> list = new ArrayList<>();
CsvParser.getLinesFromCsvFile(file)
.forEach(strings -> list.add(new Force(strings[0], strings[1])));
for (int i = 0; i <= months; i++) {
LinkedBlockingQueue<Force> queue = new LinkedBlockingQueue<>(list);
for (int j = 0; j < queue.size(); j++) {
apiExecutor.submit(new StopSearchTask(queue.remove(),
from.plusMonths(i),
writeFile));
}
}
}
}
【问题讨论】:
-
Station和Force是什么关系? -
@Simone Lugarella 无。如果有帮助,我可以从一些
BaseEntity扩展它们 -
StopSearchTask和CrimeTask相同
标签: java dry code-duplication