2012-03-07 213 views
1

我有兩個陣列列表,第二個是第一個列表的子集。 我想知道元素的子集中的第一個ArrayList中的最初和最後的位置(在我的例子中的ArrayList中的位置:UNO,因爲,TRE)比較兩個陣列列表並獲取常用元素的位置

如何修改這個代碼?

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 2012-03-07 12:14:26

+1

歡迎來到Stack Overflow。請閱讀[如何問](http://stackoverflow.com/questions/how-to-ask),[你有什麼嘗試?](http://mattgemmell.com/2008/12/08/what-have - 你試過/),和[如何問問題的智能方式](http://catb.org/esr/faqs/smart-questions.html)。 – 2012-03-07 12:16:40

+0

只是一個舉例來理解如何管理這種情況 – scirer 2012-03-07 12:19:53

回答

2

java.util.Collections.indexOfSubList()方法將返回子表的索引:

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

謝謝你,你的回答非常有用 – scirer 2012-03-07 13:00:30

0

最簡單的答案當然是遍歷arraylist並執行String.equals()來查找索引。

0

使用ArrayList的indexOf方法。

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

月2思想,如果SubsetArrayList項目在相同的順序和contigous秩序。你可以做如下:

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

你可以發佈完整的週期來解決我的問題嗎? – scirer 2012-03-07 12:23:24

+0

完成周期是什麼意思?你正在獲取每個元素的索引。 – Azodious 2012-03-07 12:27:43

+0

請原諒我的英文,我的意思是「你能寫出完整的解決方案嗎?」 – scirer 2012-03-07 12:58:38

1

如果你不能做到全問題分解成較小的步驟,你可以做:

  1. 如何判斷兩個元素是否匹配?
  2. 給定1,你如何判斷兩個等長表是否匹配?
  3. 鑑於2,你如何判斷一個列表是否與一個較長列表中的給定索引匹配?
  4. 鑑於3,你如何回答你的問題?