удачи в вашем классе структуры данных!
Дженерики
В Java эти структуры данных (т.е. Queue, LinkedList, ...) может содержать любой вид объекта. Однако чаще всего данный экземпляр очереди или LinkedList будет содержать коллекцию того же типа (здесь целые числа).
Синтаксис угловой скобки используется для указания того, какие типы разрешены в этом конкретном экземпляре коллекции.
Таким образом, способ чтения:
Queue<Integer> encodingQueue = new LinkedList<Integer>();
является ...
"Create a new linked-list that holds only integers, and assign that instance to the reference variable 'encodingQueue' which will be treated like a queue that holds only integers."
Эта особенность, что вы используете называется "Дженерики". Вы можете прочитать больше об этом здесь: http://en.wikipedia.org/wiki/Generics_in_Java
Autoboxing
В Java есть два вида типов: примитивы и ссылки на объекты. «int» является примитивным, а «Integer» - классом.
Вы не можете создать ссылку на примитив в Java, а коллекции (например, LinkedList) содержат только ссылки на объекты. Таким образом, вы не можете использовать примитив в коллекции (например, вы не можете поместить «int» в LinkedList). Вот почему Java предоставляет эквивалент объекта для примитивов: так, что вы можете создавать коллекции таких вещей, как целые числа, поплавки, булевы и т. Д.
Это может быть немного запутанным, когда вы впервые начинаете использовать примитивы; Java будет пытаться автоматически конвертировать примитивы в ссылки на объекты, если это то, что явно необходимо (и наоборот). Эта функция называется «autoboxing».
List myList = new LinkedList<Integer>();
myList.add(2);
Здесь 2 является примитивным. Но компилятор знает, что вам нужна ссылка на объект, а не примитив. Таким образом, он автоматически «блокирует» это значение (в фоновом режиме), создавая новый экземпляр класса Integer и устанавливая его значение 2.
Итак, это эквивалентно (и это то, что на самом деле происходит):
List myList = new LinkedList<Integer>();
myList.add(Integer.valueOf(2));
Где Integer.valueOf() сначала смотрит на внутренний кэш, чтобы увидеть, если экземпляр уже существует для этого значения. Если это так, то это возвращается, иначе создается новый объект Integer для этого значения. (Спасибо, Борис, за указание на это)
[Из-за этого] (http://docs.oracle.com/javase/tutorial/java/generics/) –
' int' является примитивным типом, а примитивные типы не могут использоваться аргументами общего типа. –
Возможный дубликат [Java Generics] (http://stackoverflow.com/questions/490091/java-generics) –