如何在链表中找到链表的长度?

时间:2016-05-27 02:19:09

标签: java recursion linked-list traversal removeclass

我正在尝试浏览一个链表(我们可以称之为超级列表),其中包含链接列表(子列表)元素。

将元素添加到两个链接列表中的方法是:

LinkedList<Object> list = new LinkedList<>();

public void add(Object... item) {
    LinkedList<Object> thingie = new LinkedList<>();
    for (Object i: item) {
        thingie.add(i);
    }
    list.addAll(thingie);
}

现在我必须通过遍历超级列表来编写方法以检查子列表中是否存在1,2,3,4个元素的组 到目前为止(这是非常错误的)是:

LinkedList <Object> ohno = new LinkedList<>();
        for (int i = 0; i<list.size(); i++){
            ohno = (LinkedList<Object>) list.get(i);
            if (int j = 1; j = ohno.size();){
                return true;
            }
            else return false;
        }

1 个答案:

答案 0 :(得分:0)

你可以做的是创建一个方法,传递相关组大小的参数,并找出是否有任何大小组大小的子列表。

private static boolean hasSubListsOfSize (LinkedList<Object> superList, final int groupSize)
{
     for (int i = 0, size = superList.size(); i < size; i++)
     {
         LinkedList<Object> subList = (LinkedList<Object>) superList.get(i);
         if (subList.size() == groupSize)
         {
            return true;
         }
     }

     // didn't find any sub lists of the group size
     return false;
}

旁注:正如@Abhishek所指出的,您的超级列表在技术上不是LinkedList LinkedList's。它是LinkedList的{​​{1}}。这就是为什么你必须对LinkedList进行显式转换才能访问&#34; Sub LinkedList&#34;的原因。

如果你想要Objects的真LinkedList,那么你应该像这样创建superList:

LinkedList's

如果你以这种方式创建它,那么你将避免在编译时进行显式转换。