Arraylist.indexOf returns -1

Arraylist.indexOf returns -1

围绕一些计算智能算法进行规划,这对我来说是一个新领域。

由于某些奇怪的原因,我在查找特定数组的索引时遇到了问题。

例如,我有两个数组,parentOne 和 parentTwo 都是 Integer 类型。我将 300 个随机整数值添加到 1 - 300 之间的两个数组列表中。

然后我尝试从 1-300 之间的数组中随机 selected 索引中检索值,例如,select city may = 129,然后代码应该转到parentOne 的索引 129 和 return 该位置的相关值,但是,它 returns -1。

奇怪的是,这在查找任何 <35 的索引时完全有效。

如有任何帮助,我们将不胜感激!

谢谢。

private int[][] cycleCrossover(int first, int second){
    //tempArray to return
    int[][] tempArray = new int[2][numberOfAreas];
    if(cycleCrossover == true){
        //select a random city
        int selectedCity = 35;//random.nextInt(numberOfAreas);
        int parentOneCity = 0;
        int parentTwoIndex = 0;
        int parentTwoCity = 0;
        int parentOneIndex = 0;
        int index = 0;
        //used to store parent and exchange values as well as cycle
        ArrayList<Integer> parentOne = new ArrayList<Integer>();
        ArrayList<Integer> parentTwo = new ArrayList<Integer>();
        ArrayList<Integer> cycle = new ArrayList<Integer>();

        //Assign values to the arrays
        for(int i = 0; i <numberOfAreas; i++){
            parentOne.add(population[first][i]);
            parentTwo.add(population[second][i]);
        }

        System.out.println(parentOne);
        //get parentOne Cities into new array
        long count = selectedCity;
        //Determine my cycle contents
        while(count > 0){
            //Get the index of the first city
            index = parentOne.indexOf(selectedCity);           
            //Add the first cities index to my cycle
            cycle.add(parentOne.indexOf(selectedCity));
            //add the next city to my parents cycle
            selectedCity = parentTwo.get(index);
            //take 1 from count
            count = count - 1;
        }
}

如果ArrayList的indexOf方法returns-1,说明你要查找的对象在ArrayList中不存在