2012-11-16 106 views
1

我想设计一个链表到另一个链表,到目前为止,我在MyLinkedList类此方法:添加到链表LinkedList的,JAVA

public void addList(int index, E e){ 
     if(index == 0){ 
      addFirst(e); 
     } else if (index >= size){ 
      addLast(e); 
     } 
     else{ 
      Node<E> current = head; 
      for(int i = 1; i < index; i++){ 
       current = current.next; 
      } 
      Node<E> temp = current.next; 
      current.next = new Node<E>(e); 
      (current.next).next = temp; 
      size++; 
     } 
    } 

我卡上的方法本身,我的主要程序有两个LinkedLists,看起来像这样:

MyLinkedList<String> strings1 = new MyLinkedList<String>(); 
     strings1.add("java"); 
     strings1.add("language"); 
     strings1.add("cooler"); 
     strings1.add("noob"); 
     System.out.println(list1); 

     MyLinkedList<String> strings2 = new MyLinkedList<String>(); 
     strings2.add("artistic"); 
     strings2.add("cereal"); 
     strings2.add("bowl"); 
     System.out.println(list2); 

然后我想补充的字符串2 LinkedList的给string1的链表。我会怎么做? 我曾经想过用

strings1.addList(2, strings2); 

,但没有奏效,它不会让我补充strings2到strings1 我想输出是这样的,如果我有它做: java的,语言,艺术,麦片,碗,冷却器,noob 或类似的东西,请帮忙!

+1

是否要将一个列表的*内容*添加到另一个列表中?或者你是否想将实际列表本身添加到新的链接列表中? –

+0

另外,当你说“它没有工作”会发生什么?你怎么知道“它不会让你添加strings2到string1”?当你尝试时会发生什么? –

+0

为什么你需要创建另一个班级?你可以使用原来的类。如果您需要自定义索引,请使用数组。 –

回答

0

使用方法addAll(int index, Collection c)将两个列表添加在一起。

strings1.addAll(startIndex, strings2); 

您也可以实现List接口类MyLinkedList .. 这还不算真正清楚你MyLinkedList类是什么样子?

例如:

+0

问题是关于在自定义链表类中实现一个方法。 –

+0

那么,你不能将两件事情添加到同一个索引,所以我不知道你想要实现什么? –

+0

不是List#addAll(int,java.util.Collection)你想实现什么?我不明白为什么你会重写它,如果你可以实现列表界面 –

3

你在你的类中的方法,它接受一个节点,只是因为你需要为第二个列表调用此多次

void addAll(int index, MyList<> second_list) 
{ 
    for(Object o : second_list) 
    { 
    addList(index, o); 
    ++index; 
    } 
} 

基于for循环的上述范围可能无法正常工作,除非你的类实现正确的接口,我是懒惰 - 用你的类支持正常的迭代...

+0

+1为回答实际(不清楚 - 国际海事组织)的问题。 –

+0

+1哎呀...对不起,给了你+1,你的解决方案其实是正确的。我的错。 – Renato

0

最简单的方式。 ...

public void insertList(int index, List<String> list) { 
    Collections.reverse(list); 
    for (String str : list) { 
     add(index, str); 
    } 
} 
+0

当然,这段代码应该进入LinkedList的子类。 – Renato