当contains返回true时,如何在列表中查找元素的索引位置

Ant*_*ony 66 java

我有一个ListHashMap,所以我使用List.contains找出如果列表中包含指定HashMap.如果是这样,我想从列表中获取该元素,那么如何找出元素所在位置的索引位置?

    List benefit = new ArrayList();
    HashMap map = new HashMap();
    map.put("one", "1");
    benefit.add(map);
    HashMap map4 = new HashMap();
    map4.put("one", "1");

    System.out.println("size: " + benefit.size());
    System.out.println("does it contain orig: " + benefit.contains(map));
    System.out.println("does it contain new: " + benefit.contains(map4));

    if (benefit.contains(map4))
        //how to get index position where map4 was found in benefit list?
Run Code Online (Sandbox Code Playgroud)

Tom*_*icz 132

有什么不对:

benefit.indexOf(map4)
Run Code Online (Sandbox Code Playgroud)

?如果找不到项,它会返回一个索引或-1.

顺便说一下,我强烈建议将地图包装在某个对象中并尽可能使用泛型.


小智 13

这是一个例子:

List<String> names;
names.add("toto");
names.add("Lala");
names.add("papa");
int index = names.indexOf("papa"); // index = 2
Run Code Online (Sandbox Code Playgroud)


Oli*_*rth 5

使用List.indexOf().当有多个重复项时,这将为您提供第一个匹配项.