如何在java中找到通用单链表的大小
在java中,我很难找到通用单链表的大小。这是我的代码(下面我将解释我是如何找到它的,以及我遇到了什么困难): 问题是如何在java中找到通用单链表的大小,java,generics,linked-list,Java,Generics,Linked List,在java中,我很难找到通用单链表的大小。这是我的代码(下面我将解释我是如何找到它的,以及我遇到了什么困难): 问题是temp.getTail()。Eclipse在这种特定情况下要求将变量temp强制转换为List。但这对我来说毫无意义,因此List应该就像指向列表中下一个元素的“next”指针 请有人对我这么好,解释一下我做错了什么,以及我如何解决这个问题。我真的在努力理解泛型(我也读了很多关于泛型的书,但似乎仍然不知道如何处理这种情况) 我将在我的测试类中使用此列表: Lis
temp.getTail()
。Eclipse在这种特定情况下要求将变量temp
强制转换为List
。但这对我来说毫无意义,因此List
应该就像指向列表中下一个元素的“next”指针
请有人对我这么好,解释一下我做错了什么,以及我如何解决这个问题。我真的在努力理解泛型(我也读了很多关于泛型的书,但似乎仍然不知道如何处理这种情况)
我将在我的测试类中使用此列表:
List<Integer> coins = List.node(1, List.node(2, List.node(5, List.node(10,
List.node(20, List.node(50, List.node(100, List.node(200, null))))))));
List coins=List.node(1,List.node)(2,List.node)(5,List.node)(10,
List.node(20,List.node(50,List.node(100,List.node(200,null‘‘‘‘‘‘‘‘)’));
我将递归计算给定欧元金额的可能硬币组合数(值1、2、5、10、20、50、100和200)。应该是:
int size = 1;
List<T> temp = this;
while (temp.getTail() != null) {
temp = temp.getTail();
size++;
}
temp
是一个整数
,尾部将是一个列表
,因此当列表
中定义了一个整数时,您不能将一小部分整数分配给一个整数您试图从t
调用的getTail()
可行的迭代解决方案是:
public int size(){
int size = 1;
List<T> temp = this;
while (temp.getTail() != null) {
temp = temp.getTail();
size++;
}
return size;
}
为什么tail
的类型是List
?另外,getTemp()
方法在List
中定义,您试图从T
类型变量调用它。这行不通。@RohitJain这是一个课堂作业。类列表的属性已提供给我们。我还试图弄明白,为什么tail
是List
类型,而不仅仅是T
。我的猜测是,tail
某种类型的“next”指针是指向列表的下一个元素的。在这种情况下,我如何遍历列表中的元素以找出大小?这是我的问题…你犯了一个错误。但除此之外,它是好的(和我的迭代相同),所以有一个向上投票@vandale非常感谢您的快速回复。不过我有个问题。为什么要从1开始递增计数,而不是从0开始递增计数?据我所知,列表的第一个元素的索引为0。@user3185735假设您有一个列表。这意味着列表将至少有一个元素,因此从1开始。然后,每增加一个元素,就增加一个元素。把它想象成一个数组:它的最后一个元素将是length-1
,但它是length
long@vandale这对我来说完全有道理:)非常感谢你的帮助。你们太棒了!非常感谢你。这和@vandale的回应已经敲定了交易:)。不过只有一个问题。。。既然我们不在这个属性中存储数据,为什么在这种情况下我们需要T head
?有什么意见吗?标题就是数据。例如,如果您想打印列表,您可以递归或迭代并打印每个条目中的head
字段。非常感谢:)您帮助我解决了下一个问题,从列表的特定索引中获取数据。
int size = 1;
List<T> temp = this;
while (temp.getTail() != null) {
temp = temp.getTail();
size++;
}
Integer temp = head;
while (temp.getTail() != null) {
temp = temp.getTail();
size++;
}
public int size(){
int size = 1;
List<T> temp = this;
while (temp.getTail() != null) {
temp = temp.getTail();
size++;
}
return size;
}
public int size() {
if (getTail() == null)
return 1;
else
return 1 + getTail().size();
}