Это хорошее кодирование в Java ?:
У меня есть массив строк.String[] strArr = ...
.Теперь я хочу обработать его и получить результат, поэтому я создал метод, принимающий массив String в качестве аргумента, например,
public bopolen processArray(String[] srtArr){
// .... some processing
// loop over string array, process it and create a
// list of objects with same size as array
List<Object> objList = new ArrayList<Object>(strArr.length);
for(String str : strArr) {
String[] anotherStrArr = str.split(",");
Object myObj = new MyObject(anotherStrArr[0],anotherStrArr[1]);
objList.add(myObj);
}
// .... some more processing
// ....
// loop over list and call another method
// that also takes an String array as argument like
for (Object obj: objList) { <-- will loop same times as for the String array.
boolean res = processData(obj.getDataMethod(), strArr); <-- again pass the same array as argument to another method.
// This method will get called as many time as array length.
}
}
Теперь второй метод:
public boolean processData(String data, String[] strArr) {
// ..... some processing.
// loop over String array and compare with data to process.
for(String str: strArr) {
String[] againStrArr = str.split(",");
if(againStrArr[0].equals(data)) {
// ... process on data and get the result.
}
}
// ..... other statements of method.
}
Итаккак видите, я передаю один и тот же массив двум методам и повторяю его снова и снова.Это хорошая практика в Java, так как мой размер массива очень длинный, около 2000 элементов в обычном случае.
Объяснение, почему я так много зацикливаюсь:
Я получил строкумассив из запроса, который содержит db_name и db_score myObject, который я должен обновить в базе данных.Каждый элемент в strArr - это разделенные запятыми значения в БД, такие как db_name,db_score
.Поэтому сначала я перебираю массив и создаю строку со всеми именами, разделенными запятыми, а затем запрашиваю в базе данных, чтобы создать список MyObject.Затем я перебираю этот список, чтобы обновить myObj новым счетом, но чтобы получить точную оценку имени, мне снова нужно перебрать массив и сравнить имя, а затем получить его счет.
Это моя таблица под названием Players:
id | name | score
1 | mark | 5
2 | mark_1 | 5
3 | mark_2 | 5
4 | mark_3 | 5
Пример данных в массиве строк: {"mark,10","mark_1,15","mark_2,20","mark_3,30"}
Теперь я перебираю массив и создаю строку имени, разделенную запятыми, и использую ее в запросе, например:
select * from myObject where name in ('mark','mark_2','mark_2','mark_3')
|_________________________________|
|
this much part is built from looping over the String array
Итак, первая итерация предназначена для создания предложения where.Теперь этот запрос возвращает список MyObject.Второй раз я перебираю этот список, чтобы обновить счет игроков.Но чтобы получить оценку конкретного имени игрока, мне снова нужно пройтись по strArray и найти его.Поэтому для каждого элемента в списке мне нужно вызвать метод и передать playerName и strArr, чтобы получить его счет, а затем, наконец, обновить его в базе данных.