我正在尝试查找放在数组中的对象的索引。数组已经像这样填充
for(i = 0 ; i<n ;i++){
for(j=0; j<n ;j++){
squares[i][j]= new Square(i,j)
}
因此数组基本上没有名称的Square对象。我想创建一个返回方形对象索引的方法,如:
getObject(Square s){
{
我已经看到了其他要求使用
的答案Arrays.asList(array)
这样的东西,但他们都试图返回int或String的索引。
我应该如何返回任何对象的索引?
答案 0 :(得分:1)
只要equals()
的比较运算符(Square
方法)适合您,那么这些方法中的任何一种都可行:
ArrayList
并取消indexOf
和get
java.util.Arrays.binarySearch
foreach
循环并手动搜索您只需要一个有效的比较运算符,如果默认Object.equals()
(对象实例的比较)适合您的需要,那么您没有太多工作要做:
Point getObject(Square s){
{
for(int i = 0; i<n; i++){
for(int j = 0; j<n; j++){
if( squares[i][j].equals(s) ) {
return Point(i, j);
}
}
}
return null;
}
请注意,如果您的阵列很大,那么这不是最快的方法。
答案 1 :(得分:0)
如果你可以使用equals方法(假设也定义了n,或者你可以使用长度):
public int[] getObject(Square s){
int[] returnIndex = new int[2];
for(int i = 0 ; i<this.n ;i++){
for(int j=0; j<this.n ;j++){
if(s.equals(this.squares[i][j])) {
returnIndex[0] = i;
returnIndex[1] = j;
return returnIndex;
}
}
}
return null;
}
答案 2 :(得分:0)
我已经解决了这个问题
private ArrayList<Square> squareList= new ArrayList<Square>(9);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
mSquare[i][j] = new Square(i, j);
squareList.add(mSquare[i][j]);
}
}
public int index(int r, int c) {
return squareList.indexOf(Square(r, c));
}