在Java中的ArrayList中查找重复对象的索引

时间:2020-02-18 08:32:10

标签: java arraylist

public class NewMain {
    public static void main(String[] args) {
        ArrayList<String> array = new ArrayList<>();
        array.add("Ace of Hearts");
        array.add("King of Clubs");
        array.add("Three of Spade");
        array.add("Ace of Hearts");
        array.add("Ten of Clubs");
        for(String s: array)
            System.out.println(s+"at postion: "+array.indexOf(s));
    }
}

IndexOf()返回对象在ArrayList中的第一次出现。 假设我的代码是扑克玩家的手,并且我想知道他持有的卡的索引。 红桃心位于 1号和4号位置。但是Index A()在出现“ Ace of Hearts”时都会分别返回位置1和1

问题:
1)还有其他获取价值的方法吗?
2)我应该使用其他数据结构,例如HashMap还是其他?

2 个答案:

答案 0 :(得分:1)

List.indesOf()方法将返回列表的第一个匹配项。但是您的要求可以通过以下方式满足。

    import java.util.ArrayList;

    public class NewMain {
        public static void main(String[] args) {
            ArrayList<String> array = new ArrayList<>();
            array.add("Ace of Hearts");
            array.add("King of Clubs");
            array.add("Three of Spade");
            array.add("Ace of Hearts");
            array.add("Ten of Clubs");
            for(int i =0;i<array.size();i++)
                System.out.println(array.get(i)+"at postion: "+i);
        }
    }

答案 1 :(得分:0)

这应该可以解决您的问题:

 public class NewMain {
        public static void main(String[] args) {
            String abc="Ace of Hearts";
            List<String> array = new ArrayList<String>();
            array.add("Ace of Hearts");
            array.add("King of Clubs");
            array.add("Three of Spade");
            array.add("Ace of Hearts");
            array.add("Ten of Clubs");
            List<Integer> indexList= indexOfAll(abc,array);
            System.out.println(indexList);

        }

        static <T> List<Integer> indexOfAll(T obj, List<T> list) {
            final List<Integer> indexList = new ArrayList<Integer>();
            for (int i = 0; i < list.size(); i++) {
                if (obj.equals(list.get(i))) {
                    indexList.add(i);
                }
            }
            return indexList;
        }
相关问题