Java 为什么这些变量在这个泛型方法中有不同的类型?
为什么“result”是用简单的“T”创建的,而“temp”是用“Java 为什么这些变量在这个泛型方法中有不同的类型?,java,generics,queue,Java,Generics,Queue,为什么“result”是用简单的“T”创建的,而“temp”是用“Queue”创建的,这有关系吗 // returns the item at the front of the given queue, without // removing it from the queue public static <T> T peek(Queue<T> q) throws NoSuchElementException { /*
Queue
”创建的,这有关系吗
// returns the item at the front of the given queue,
without
// removing it from the queue
public static <T> T peek(Queue<T> q)
throws NoSuchElementException {
/** COMPLETE THIS METHOD **/
if (q.isEmpty()) {
throw new NoSuchElementException("Queue Empty");
}
T result = q.dequeue();
Queue<T> temp = new Queue<T>();
temp.enqueue(result);
while(!q.isEmpty()) {
temp.enqueue(q.dequeue());
}
while(!temp.isEmpty()) {
q.enqueue(temp.dequeue());
}
return result;
}
//返回给定队列前面的项目,
没有
//将其从队列中删除
公共静态T peek(队列q)
抛出非接触元素异常{
/**完成此方法**/
if(q.isEmpty()){
抛出新的NoSuchElementException(“队列为空”);
}
T result=q.dequeue();
队列温度=新队列();
临时排队(结果);
而(!q.isEmpty()){
临时排队(q.dequeue());
}
而(!temp.isEmpty()){
q、 排队(temp.dequeue());
}
返回结果;
}
结果和临时的类型不同,因为它们代表不同类型的事物。让我们看看这段代码:
T result = q.dequeue();
在这里,我们存储在result
中的内容是当您从队列q
中退出队列时返回的任何类型的内容。那么q
存储什么类型的东西呢?查看参数,我们看到q
是一个队列
,这意味着队列中的每个元素都是T
类型。因此,我们需要给出result
类型T
,因为它表示从队列中取出的单个元素
另一方面,当我们写作时
Queue<T> temp = new Queue<T>();
Queue temp=new Queue();
目标是创建一个新的队列
,该队列可以容纳T
类型的对象。为此,我们需要告诉Java我们希望它成为一个队列
这与我们声明result
时不同的原因是我们试图做根本不同的事情<代码>结果
设计用于保存单个项目,在本例中,该项目的类型为T
temp
设计用于存储项目集合,因此我们将其设置为队列
,以表明它不仅仅是单个T
,而是它们的队列
希望这有帮助 result
和temp
的类型不同,因为它们代表不同类型的事物。让我们看看这段代码:
T result = q.dequeue();
在这里,我们存储在result
中的内容是当您从队列q
中退出队列时返回的任何类型的内容。那么q
存储什么类型的东西呢?查看参数,我们看到q
是一个队列
,这意味着队列中的每个元素都是T
类型。因此,我们需要给出result
类型T
,因为它表示从队列中取出的单个元素
另一方面,当我们写作时
Queue<T> temp = new Queue<T>();
Queue temp=new Queue();
目标是创建一个新的队列
,该队列可以容纳T
类型的对象。为此,我们需要告诉Java我们希望它成为一个队列
这与我们声明result
时不同的原因是我们试图做根本不同的事情<代码>结果
设计用于保存单个项目,在本例中,该项目的类型为T
temp
设计用于存储项目集合,因此我们将其设置为队列
,以表明它不仅仅是单个T
,而是它们的队列
希望这有帮助 这就更有意义了,我不想看t,就像我看int或float一样,谢谢!这就更有意义了,我不想看t,就像我看int或float一样,谢谢!