У меня есть объект, трейлер, который выглядит так:
{
"assetId": 0,
"type": "VN",
"number": "69492",
"customerId": "DTMO",
"yardId": 0,
"latitude": 36.994444444444444444444444,
"longitude": -88.483611111111111111111111,
"id": 0
}
И у меня есть объект, который возвращает список клиентов:
{
"customerId": "DTMX",
"yardId": 1,
},
{
"customerId": "ABC",
"yardId": 2,
},
{
"customerId": "GHR",
"yardId": 3,
}
Мне нужно установить yardId в первом объекте, где customerId совпадает во втором объекте. Я пытаюсь использовать HashMap, но, похоже, он работает только тогда, когда оба объекта одного типа.
EDITED
HashMap<String, Trailer> map = new HashMap<>();
for (Trailer t : trailersAS400) {
map.put(t.getNumber(), t);
}
for (Trailer t : trailersSQLServer) {
String key = t.getNumber();
if (!map.containsKey(key)) {
map.put(key, t);
}
}
trailers = new ArrayList<>(map.values());
for (Trailer t : trailers) {
String key = t.getNumber();
Trailer trailerToModify = map.remove(key);
trailerToModify.setYardId(99);
map.put(key, trailerToModify);
}
trailers = new ArrayList<>(map.values());
Мне нужно поставить фактический yardId вместо 99. Я только изучаю карты в Java.
РЕДАКТИРОВАТЬ 2
Нет ошибок, он запускается, но все еще не получает значение для yardId.
HashMap<String, Trailer> map = new HashMap<>();
for (Trailer t : trailersAS400) {
map.put(t.getNumber(), t);
}
for (Trailer t : trailersSQLServer) {
String key = t.getNumber();
if (!map.containsKey(key)) {
map.put(key, t);
}
}
HashMap<String, Integer> mapCustomers = new HashMap<>();
for (Customer c : customers) {
mapCustomers.put(c.getCustomerId(), c.getYardId());
}
for (Map.Entry<String, Trailer> entry : map.entrySet()) {
Integer yardId = mapCustomers.get(entry.getKey());
yardId = yardId == null ? entry.getValue().getYardId() : yardId;
entry.getValue().setYardId(yardId);
}
trailers = new ArrayList<>(map.values());