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

时间:2012-01-25 18:57:55

标签: java

我有List HashMap所以我正在使用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?

7 个答案:

答案 0 :(得分:125)

出了什么问题:

benefit.indexOf(map4)

?它返回索引,如果找不到项,则返回-1。

BTW我强烈建议将地图包装在某个对象中并尽可能使用泛型。

答案 1 :(得分:15)

答案 2 :(得分:13)

以下是一个例子:

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

答案 3 :(得分:5)

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

答案 4 :(得分:4)

答案 5 :(得分:1)

int indexOf(Object o) 此方法返回指定元素第一次出现的列表中的索引,如果此列表不包含此元素,则返回-1。

答案 6 :(得分:0)

可以使用

int indexOf()。如果找不到匹配项,则返回-1