Jay*_*Jay 8 java collections arraylist
我有两个列表A和B.我想找出A中与listB元素匹配的元素索引.像这样的东西:
ArrayList listA = new ArrayList();
listA.add(1);listA.add(2);listA.add(3);listA.add(4);
ArrayList listB = new ArrayList();
listB.add(2);listB.add(4);
ArrayList listC = new ArrayList();
for(int i=0; i<listB.size();i++) {
int element = listB.get(i);
for(int j=0; j<listA.size(); j++) {
if(listA.get(j) == element) listC.add(j);
}
}
Run Code Online (Sandbox Code Playgroud)
我想这是一个难看的方式.找到与B中所有元素匹配的A的所有索引的最佳方法是什么?我相信在集合api中存在一个名为containsAll的方法 - 不要认为它返回匹配的索引.
如果你必须使用ArrayList,你可以创建一个HashSet从ArrayList.这将调用containsO(1).需要O(n)来创建HastSet.如果你可以从a开始HashSet,那将是最好的.
public static void main(String[] args)
{
List listA = new ArrayList();
listA.add(1);
listA.add(2);
listA.add(3);
listA.add(4);
List listB = new ArrayList();
listB.add(2);
listB.add(4);
Set hashset = new HashSet(listA);
for(int i = 0; i < listB.size(); i++)
{
if(hashset.contains(listB.get(i)))
{
listC.add(i);
System.out.println(i);
}
}
}
Run Code Online (Sandbox Code Playgroud)