我有两个arraylists,第二个是第一个的子集。 我想知道子集中元素的第一个arraylist中的初始和最终位置(在我的例子中,arrayList中的位置:uno,due,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 + " ");
}
}
答案 0 :(得分:2)
java.util.Collections.indexOfSubList()
方法将返回子列表的索引:
int startIdx = Collections.indexOfSubList(arrayList, subSetArrayList);
if (-1 != startIdx)
{
int endIdx = startIdx + subSetArrayList.size() - 1;
}
答案 1 :(得分:1)
如果你无法解决整个问题,请将其分解为可以执行的较小步骤:
答案 2 :(得分:0)
最简单的答案当然是遍历arraylist并执行String.equals()来查找索引。
答案 3 :(得分:0)
使用ArrayList的indexOf方法。
for(String item : subSetArrayList)
{
int index = arrayList.indexOf(item);
}
第二个想法,如果SubsetArrayList
项目的顺序和顺序相同。你可以这样做:
int startIndex = arrayList.indexOf(subSetArrayList.get(0));
int endIndex = startIndex + subSetArrayList.size() - 1;