Я создаю тесты в SoapUI. У меня очень большой отклик (>3500 пошлин). Для этого ответа мне нужно создать запрос и выполнить этот запрос. В настоящее время код (Java) работает, но я хотел бы оптимизировать код.
Для каждой обязанности я создаю запрос на получение дополнительных данных о сотрудниках и выполняю его с помощью цикла for next. Ниже приведен пример большого XML-ответа, который я получаю.
<DUTIES>
<DUTY>
<EMPNO>1</EMPNO>
<LOCATION>AMS</BASE_STATION>
<ACTUALTIME>2019-02-20T06:00:00</ACTUALTIME>
<POSITIONING_CODE>1</POSITIONING_CODE>
</DUTY>
<DUTY>
<EMPNO>2</EMPNO>
<LOCATION>RTM</BASE_STATION>
<ACTUALTIME>2019-02-20T06:00:00</ACTUALTIME>
<POSITIONING_CODE/>
</DUTY>
<DUTY>
<EMPNO>1</EMPNO>
<LOCATION>AMS</BASE_STATION>
<ACTUALTIME>2019-02-21T06:00:00</ACTUALTIME>
<POSITIONING_CODE>1</POSITIONING_CODE>
</DUTY>
</DUTIES>
Как видно из примера, один и тот же сотрудник несколько раз появляется в ответе, поэтому в настоящее время я несколько раз вызываю запрос для одного и того же сотрудника. Я хотел бы оптимизировать это.
В SoapUI я могу использовать оператор:
String[] emps = resp.getNodeValues("/Duties/Duty/string(EMPNO)");
String[] locs = resp.getNodeValues("/Duties/Duty/string(LOCATION)");
String[] tims = resp.getNodeValues("/Duties/Duty/string(ACTUALTIME)");
Затем я хотел бы отсортировать массивы по emps и создать запрос только для получения дополнительных данных о сотруднике при изменении сотрудника. Это сделает код намного быстрее.
Теперь мои вопросы: Как лучше всего это сделать? Работать с многомерными массивами и сортировать их? Или есть лучший способ сделать это?
Заранее спасибо,
Сказал




Я бы создал экземпляр java.util.HashMap<String,String> или java.util.HashMap<Long,String> в зависимости от того, какой тип данных возвращается, когда вы извлекаете empno.
Просто вслепую сделайте map.put(empno,null) для каждого элемента обязанности, и впоследствии у вас будет каждый сотрудник в хэш-карте только один раз, так как каждое дополнительное добавление одного и того же ключа перезапишет существующий.
После этого просто
for (String key : map.keySet()) {
// do your stuff
}
Как я вижу, вам действительно не нужно ничего сортировать, чтобы добраться туда.
Слишком широко - «Тогда я бы хотел отсортировать массивы по emps ...» - так иди и сделай это - в чем вопрос? Когда у вас возникают проблемы с кодом, stackoverflow.com может помочь... или вы ожидаете получить решение вместо того, чтобы работать над ним самостоятельно?