0

我正在尝试查找放置在数组中的对象的索引。数组已像这样填充

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 的索引。

我应该如何返回任何对象的索引?

4

3 回答 3

1

只要您的比较运算符(equals()方法)Square适合您,那么这些方法中的任何一种都可以:

  • 转换为ArrayList和取消indexOfget
  • 使用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;
}

请注意,如果您的数组很大,这不是最快的方法。

于 2013-04-17T08:02:57.123 回答
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;
}
于 2013-04-17T08:13:24.220 回答
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));
    }
于 2015-04-29T04:29:45.447 回答