2016-10-09 7 views
1

私は自分で作成したリンクリストを持っています。 以下のメソッドで指定された入力の最後の文字で始まるすべての要素を取得します。リンクリスト内の特定の文字で始まるすべての要素を取得する

public String tracker(String w) 
{ 
    SampleNode d = head(); 

    while(d != null) 
    { 
     if(w.charAt(w.length() -1) == d.getElement().charAt(0)) 
     { 
      return d.getElement(); 
     } 
     d = d.getNext(); 
    } 
    return null; 
} 

上記のコードは、最初の要素のみを返しますが、すべての要素が必要です。どうすればいいですか?ありがとう!

編集:正しい答え

public List tracker(String w) 
{ 
    SampleNode d = head(); 
    LinkedList another = new LinkedList(); 

    while(d != null) 
    { 
     if(w.charAt(w.length() -1) == d.getElement().charAt(0)) 
     { 
      another.add(d.getElement()); 
     } 
     d = d.getNext(); 
    } 
    return another; 
} 

答えて

3

を必要と誰のために私はあなたの作業コードを与える文句を言わないが、どのように行うにあなたを伝えることができます。

ループ内ですぐに要素を戻しているだけです。それはあなたが望むものです。

テイクリストは、追加してから最後にリストを返します。

あなたはほとんど完了です。ただ新しいリストを作成し、条件内でリストに追加して最後に戻ります。

+0

をので、この方法は今文字列の代わりに、新しいリストを返す必要がありますか? – ZeroDarkThirty

+0

@ZeroDarkThirty Ofcourse yes :) –

+0

OPの指示に従って新しいコードを追加しました。それは仕事をする!ありがとうございました! – ZeroDarkThirty

3

あなたが重複したエントリを含むすべての要素をしたいなら、あなたはより良い以下の例のように、リストを使用する必要があります。

public List<String> tracker(String w) { 
    SampleNode d = head(); 
    // declare list to populate with all elements 
    List<String> allElements = new ArrayList<>(); 
    while (d != null) { 
     if (w.charAt(w.length() - 1) == d.getElement().charAt(0)) { 
      // add element to the list 
      allElements.add(d.getElement()); 
     } 
     d = d.getNext(); 
    } 

    return allElements; 
} 
+0

このタスクではListを使用できません。残念ながら、私が構築したリンクリストだけが使用できます。 – ZeroDarkThirty

+0

@ZeroDarkThirty Scary。善良で親切な世界では、すべてのLinkedLiistはListです。 –

関連する問題