У меня грубая функция, и я хочу ее почистить.Все, что он содержит, - это некоторые карты, цикл for и операторы if.
По сути, у меня есть карта, из которой я хотел бы получить только определенную информацию, но один из ключей, которые мне нужны, меняется на одно число в каждой карте.
Я думал, что, может быть,простое утверждение переключателя или что-то должно исправить это, но я часто путаюсь с упрощением таких вещей.
Вот как выглядит эта функция:
public void separateBooksFromList() {
book1 = [:] //map for book1
book2 = [:] //map for book2
book3 = [:] //map for book3
book4 = [:] //map for book4
book5 = [:] //map for book5
book6 = [:] //map for book6
book7 = [:] //map for book7
book8 = [:] //map for book8
book9 = [:] //map for book9
book10 = [:] //map for book10
lastModified = new Date(dataFile.lastModified()) //last time the file was scanned
readDate = new Date() //current date the text file was read
for(int i = 0; i < bookList.size(); i++) {
if(i==0) {
book1['lastScan'] = lastModified
book1['readDate'] = readDate
book1['bookNumber'] = bookList['Book Number 0'][i] // <- only part of the map that changes
book1['bookTitle'] = bookList['Book Title'][i]
}
if(i==1) {
book2['lastScan'] = lastModified
book2['readDate'] = readDate
book2['bookNumber'] = bookList['Book Number 1'][i] // <- only part of the map that changes
book2['bookTitle'] = bookList['Book Title'][i]
}
if(i==2) {
book3['lastScan'] = lastModified
book3['readDate'] = readDate
book3['bookNumber'] = bookList['Book Number 2'][i] // <- only part of the map that changes
book3['bookTitle'] = bookList['Book Title'][i]
}
if(i==3) {
book4['lastScan'] = lastModified
book4['readDate'] = readDate
book4['bookNumber'] = bookList['Book Number 3'][i] // <- only part of the map that changes
book4['bookTitle'] = bookList['Book Title'][i]
}
if(i==4) {
book5['lastScan'] = lastModified
book5['readDate'] = readDate
book5['bookNumber'] = bookList['Book Number 4'][i] // <- only part of the map that changes
book5['bookTitle'] = bookList['Book Title'][i]
}
if(i==5) {
book6['lastScan'] = lastModified
book6['readDate'] = readDate
book6['bookNumber'] = bookList['Book Number 5'][i] // <- only part of the map that changes
book6['bookTitle'] = bookList['Book Title'][i]
}
if(i==6) {
book7['lastScan'] = lastModified
book7['readDate'] = readDate
book7['bookNumber'] = bookList['Book Number 6'][i] // <- only part of the map that changes
book7['bookTitle'] = bookList['Book Title'][i]
}
if(i==7) {
book8['lastScan'] = lastModified
book8['readDate'] = readDate
book8['bookNumber'] = bookList['Book Number 7'][i] // <- only part of the map that changes
book8['bookTitle'] = bookList['Book Title'][i]
}
if(i==8) {
book9['lastScan'] = lastModified
book9['readDate'] = readDate
book9['bookNumber'] = bookList['Book Number 8'][i] // <- only part of the map that changes
book9['bookTitle'] = bookList['Book Title'][i]
}
if(i==9) {
book10['lastScan'] = lastModified
book10['readDate'] = readDate
book10['bookNumber'] = bookList['Book Number 9'][i] // <- only part of the map that changes
book10['bookTitle'] = bookList['Book Title'][i]
}
}
}
Как видите, это довольно уродливая функция.
Могу ли я сделать простой оператор switch или что-то еще, чтобы сократить код и сделать его более профессиональным?