Как найти индекс элемента в списке, когда contains возвращает true


у меня есть List of 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?
6 53

6 ответов:

Что случилось с:

benefit.indexOf(map4)

? Его либо возвращает индекс или -1, если элементы не найдены.

КСТАТИ, Я сильно рекомендуется обернуть карту в какой-либо объект и использовать дженерики, если это возможно.

вот пример:

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

использовать List.indexOf(). Это даст вам первый матч, когда есть несколько дубликатов.

int indexOf(Object o) Этот метод возвращает индекс в этом списке первое вхождение заданного элемента или -1, если этот список не содержит этот элемент.