cocaine4ik
@cocaine4ik

Как усовершенствовать класс Queue таким образом, чтобы в очереди можно было хранить другие типы данных, например значения типа int или double?

Как усовершенствовать класс Queue таким образом, чтобы в очереди можно было хранить другие типы данных, например значения типа int или double?

public class Queue {
	
	char q[]; // Array to storage elements in queue	
	int putloc, getloc;
	
	// indexes of placement and extracting  queue elements
	
	Queue(int size) { q = new char[size+1];
	
	// allocate memory for queue
	
	putloc = getloc = 0; }
	
	// put symbol in queue
	
	void put(char ch) {
		if(putloc==q.length-1) {
			System.out.println(" - Queue is full.");
			return; }
		putloc++;
		q[putloc] = ch; }
	
	// extract symbol from the queue
	
	char get() { 
		if(getloc == putloc) { 
			System.out.println(" - Queue is empty."); 
			return (char) 0; } 
		getloc++;
		return q[getloc]; 
		}
}
  • Вопрос задан
  • 662 просмотра
Решения вопроса 2
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Именно int, double, float, char, byte, long, short - никак. Несмотря на то, что в джаве ООП, эти типы не являются объектами. Они не наследуются от Object'a, у них нет общего предка. Поэтому для них не работают дженерики.
Можно использовать boxed-типы Integer, Double, Float, etc. Тогда можно обобщить тип очереди в духе
class Queue <T> {
    private T[] q;
   ...
}
...
Queue<Integer> = new Queue<>();
Ответ написан
@davidnum95
Как то так:
public class Queue<T> {
  
      T q[]; // Array to storage elements in queue	
      int putloc, getloc;
      
      // indexes of placement and extracting  queue elements
      
      Queue(int size) { q = (T[])new Object[size+1];;
      
      // allocate memory for queue
      
      putloc = getloc = 0; }
      
      // put symbol in queue
      
      void put(T ch) {
        if(putloc==q.length-1) {
          System.out.println(" - Queue is full.");
          return; }
        putloc++;
        q[putloc] = ch; }
      
      // extract symbol from the queue
      
      T get() { 
        if(getloc == putloc) { 
          System.out.println(" - Queue is empty."); 
          return null; } 
        getloc++;
        return q[getloc]; 
        }
    }

Важно понимать что типами в queue могут быть только ссылочные типы:
Queue<int> queue = new Queue<>(5);  // не правильно
Queue<Integer> queue = new Queue<>(5); // правильно
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы