Я предлагаю сгруппировать тег checkPointList
по тегу Map<String, LinkedList<CheckPoint>>
:
Map<String, LinkedList<CheckPoint>> map = new HashMap<>();
map.put("A", new LinkedList<>());
map.put("B", new LinkedList<>());
map.put("C", new LinkedList<>());
for(CheckPoint c : checkPointList) {
map.computeIfAbsent(c.getTag(), ignored -> new LinkedList<>()).add(c);
}
Связанный список является удобным помощником, поскольку он позволяет вам напрямую получить первый или последний элемент (и, если он отсутствует)возвращает null
):
CheckPoint A = map.get("A").pollLast();
CheckPoint B = map.get("B").pollFirst();
CheckPoint C = map.get("C").pollFirst();
Или вы можете просто использовать это еще проще for-loop
:
CheckPoint a = null, b = null, c = null;
for (CheckPoint checkPoint : checkPointList) {
String tag = checkPoint.getTag();
if ("A".equals(tag) && a == null) {
a = checkPoint;
} else if("B".equals(tag)){
b = checkPoint;
} else if("C".equals(tag)){
c = checkPoint;
}
}
Переменные для "B"
и "C"
являютсявсегда перезаписывается последним значением, тогда как для a
будет выбрана только первая "A"
контрольная точка.