"Гарантированный"? Трудно ответить из-за ответа на вторую часть вопроса.
ArrayList не синхронизируется по умолчанию; Вектор есть.
Так что, если вы работаете с многопоточным приложением, ваш ArrayList является общим и доступным для записи состоянием, и вы не синхронизировались должным образом, вы можете обнаружить, что гарантия не такая надежная.
Если вы работаете в одном потоке, код, который вы написали, вернул бы "C".
Вы все равно должны предпочесть ArrayList, потому что синхронизация стоит дорого, и вы не всегда хотите платить цену.