Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中找到通用单链表的大小_Java_Generics_Linked List - Fatal编程技术网

如何在java中找到通用单链表的大小

如何在java中找到通用单链表的大小,java,generics,linked-list,Java,Generics,Linked List,在java中,我很难找到通用单链表的大小。这是我的代码(下面我将解释我是如何找到它的,以及我遇到了什么困难): 问题是temp.getTail()。Eclipse在这种特定情况下要求将变量temp强制转换为List。但这对我来说毫无意义,因此List应该就像指向列表中下一个元素的“next”指针 请有人对我这么好,解释一下我做错了什么,以及我如何解决这个问题。我真的在努力理解泛型(我也读了很多关于泛型的书,但似乎仍然不知道如何处理这种情况) 我将在我的测试类中使用此列表: Lis

在java中,我很难找到通用单链表的大小。这是我的代码(下面我将解释我是如何找到它的,以及我遇到了什么困难):

问题是
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();
}