2016-11-20 6 views
0

私はリンクリストを作成しようとしています。これはリンクリストとキューやスタックのような派生型を最初から作成するよう明示的に求めています。これは大学の宿題ですノードクラスとlinkedlistクラスがありますが、私はこのリンクリストクラスでaddAll()メソッドを作成するのに苦労しています。これが私の持っているものです。addAll()またはaddRange()メソッドをJavaの最初から作成するにはどうすればよいですか?

もし私が賭けなければならないと言うなら、コレクションは1つだと言いますが、新しいリストに彼のコンテンツを渡すために、私はそこにあるもののリストを追加しようとしています、obiuslyは準備ができておらず、仕事。

新しいリストの中にデータを渡すために、何らかの「プロトリスト」をどのように渡すことができますか教えてください。

は(私は私が(オブジェクト)のためのsomekindを使用する必要があります知っているが、私はそこに置か権利パラメータされる、パラメータを使用していくつかのデータを渡すために失敗している?)

public boolean addAll(Collection c) { 
     for (int i = 0; i < (this.listaNodos.size()); i++) { 

      //for (T someT : c){ 
      // Node newNodo = new Node(someT); 
      //} 

      //i know the one down there is not gonna do anything, because 
      //i'm not accesing the data, but one problem at a time would ya ;) 
      Node newNodo = new Node(someT); 
      Node actualNodo = this; 
      boolean processFinished = false; 

      try{ 
       if(index >= this.listaNodos.size() || index < 0){ 
        throw new IndexOutOfBoundsException(); 
       } 


       do{ 
        if(index == actualNodo.getIndex()) 
        { 
         actualNodo.setData(someT); 
         processFinished = true; 
         return true; 
        } 
        else 
        { 
         actualNodo = actualNodo.nextNode; 
        } 
       }while(!processFinished); 
       return false; 
      }catch(IndexOutOfBoundsException ex) 
      { 
       throw ex; 
      } 
     } 
     return false; 
    } 

は、あなたが言うことができます私はそれを動作させるためにそれを修正する方法?

明確化、建設的なコメント、または質問のいずれかの要求も大きく評価されるだろう。事前

+0

あなたのリストにadd()メソッドがありませんか?なぜあなたはコレクションを反復し、各要素に対して 'this.add()'を呼び出さないのですか? –

答えて

1

おかげで私は、すでにいくつかの並べ替えadd()方法を持っていると仮定しますか?もしそうなら、あなたはc内の各要素の上に移動して、addメソッドを使用して追加することができます

public boolean addAll(Collection<T> c) { 
    boolean changed = false; 
    for (T t:c) { 
     changed |= this.add(t); 
    } 
    return changed; 
} 

私はこのリストが変更されたかどうかを返されたブール手段を想定しています、これは、それがCollection契約で定義されている方法です:https://docs.oracle.com/javase/7/docs/api/java/util/Collection.html#addAll(java.util.Collection)

また、addメソッドのジェネリック型がないため、追加しました。あなたのクラス定義はこのように見えると思いますか?

public class MyLinkedList<T> 
+0

男の子、あなたが揺れ!、/意味する '| ='を教えてください? – user57129

+0

ああ、それは "or equals"の省略形です。コード 'a | = b'は、' a = a || b。詳細については、[この質問](http://stackoverflow.com/questions/2486472/shortcut-or-assignment-operator-in-java)を参照してください。 –

関連する問題