返回2d数组java中任意Object的索引。

时间:2013-04-17 07:56:17

标签: java arrays object indexing

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

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

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

3 个答案:

答案 0 :(得分: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;
}

请注意,如果您的阵列很大,那么这不是最快的方法。

答案 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));
    }