2012-03-07 8 views
1

私は2人のarraylistsを持っていて、2人目は最初のもののサブセットです。 サブセット内の要素の最初のarraylistの最初と最後の位置を知りたい(私の例ではarrayListの位置は:uno、due、tre)2人のarraylistsを比較し、共通の要素の位置を得る

このコードを変更するには?

import java.util.ArrayList; 

public class ConfrontaArrayList { 
public static void main(String[] args) 
{ 
    ArrayList<String> arrayList = new ArrayList<String>(); 
    ArrayList<String> subSetArrayList = new ArrayList<String>(); 

    arrayList.add("inizio"); 
    arrayList.add("stringa"); 
    arrayList.add("uno"); 
    arrayList.add("due"); 
    arrayList.add("tre"); 
    arrayList.add("fine"); 
    arrayList.add("stringa"); 

    subSetArrayList.add("uno"); 
    subSetArrayList.add("due"); 
    subSetArrayList.add("tre"); 

    System.out.print("Elementi di arrayList: "); 
    for (String stringa : arrayList) System.out.print(stringa + " "); 
    System.out.print("\nElementi di subSetArrayList: "); 
    for (String stringa : subSetArrayList) System.out.print(stringa + " "); 
} 
} 
+3

この課題はありますか?これまでに何を試しましたか? – Mike

+1

ようこそスタックオーバーフロー。 [How to Ask](http://stackoverflow.com/questions/how-to-ask)、[何を試しましたか?](http://mattgemmell.com/2008/12/08/what-have 「〜を試してみよう」、「[スマートウェイに質問する方法]」(http://catb.org/esr/faqs/smart-questions.html)を参照してください。 –

+0

はこの種の状況をどのように管理するのかを理解するための唯一の例です。 – scirer

答えて

2

java.util.Collections.indexOfSubList()方法は、サブリストのインデックスを返します。

int startIdx = Collections.indexOfSubList(arrayList, subSetArrayList); 
if (-1 != startIdx) 
{ 
    int endIdx = startIdx + subSetArrayList.size() - 1; 
} 
+0

ありがとう、あなたの答えは非常に便利です – scirer

0

最も単純な答えは、もちろんarraylistを繰り返し、String.equals()を実行してインデックスを見つけることです。

0

ArrayListのindexOfメソッドを使用します。第二思想に

for(String item : subSetArrayList) 
{ 
    int index = arrayList.indexOf(item); 
} 

SubsetArrayList項目が同じ順序でかつcontigous順序になっている場合。次のように行うことができます。

int startIndex = arrayList.indexOf(subSetArrayList.get(0)); 
int endIndex = startIndex + subSetArrayList.size() - 1; 
+0

問題を解決するためにサイクル全体を投稿できますか? – scirer

+0

完全なサイクルはどういう意味ですか?あなたは各要素のインデックスを取得しています。 – Azodious

+0

私の英語の私を失礼、私は "あなたは完全なソリューションを書くことができますか? – scirer

1

あなたが行うことができない場合は全体の問題は、あなたが行うことができます小さなステップにそれを打破:

  1. 2つの要素が一致するかどうかをどのように判断しますか?
  2. 与えられた2つの等しい長さのリストが一致するかどうかをどのように判断しますか?
  3. 2を指定すると、リストが長いリストの特定のインデックスに一致するかどうかをどのように判断しますか?
  4. 3を指定すると、問題にどのように答えることができますか?
関連する問題