除了实体和可运行类型之外,我在服务中有两个方法基本相同。
有办法加入他们吗?
我认为泛型可能会有所帮助,但我不知道如何在这里应用它们
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));
}
}
}
}
1条答案
按热度按时间sc4hvdpw1#
这是我找到的最好的方法。如果你真的想这样做,这是一种方法,但我并不真的建议。
您最终将拥有以下方法:
这需要为其创建父类
StopSearchTask
及CrimeTask
:和一个用于
Force
及Station
:和一个枚举来处理这两种类型。