В вашем вопросе отсутствует контекст. Эта проблема задавалась много раз, и единого лучшего решения не существует.
На мой взгляд, лучший способ для моделирования данных - это иметь логический тип, который представляет ваши данные. (В настоящее время вы используете кортеж, но было бы лучше иметь определенный тип с методами.)
Итак, я бы сделал следующее:
List<NumberContainer> list = new ArrayList<NumberContainer>();
Что касается скорости, в частности - это зависит от того, как вы собираетесь использовать данные. Если вы ищете быстрое время доступа, возможно, лучше всего использовать map
и ввести для каждого элемента какое-либо значение.