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中不存在
围绕一些计算智能算法进行规划,这对我来说是一个新领域。
由于某些奇怪的原因,我在查找特定数组的索引时遇到了问题。
例如,我有两个数组,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中不存在