簡體   English   中英

python list.index()的Java數組模擬物?

[英]Java array analog for python list.index()?

對於Python,我可以執行諸如array.index(element)來獲取array某個elementindex 如何在Java中使用常規數組而不是arrayList做到這一點? 有類似的功能嗎?

您可以使用Arrays.asList然后使用List.indexOf 使用Arrays.binarySearch的其他建議很好,但是要求對數組進行排序。

您必須使用Arrays.binarySearch方法(必須對數組進行排序)。

如果不接受對數組進行排序,則只有一種解決方案-全掃描。 只需遍歷數組以查找元素的索引。 通過使用Arrays.asList將數組轉換為List,然后使用list的indexOf方法,可以實現相同的目的。

你可以做:

Arrays.asList(regularArray).indexOf(elementYouWant);

或者,如果數組已排序,則可以使用

Arrays.binarySearch();

如果您不想使用Java,則可以使用Collections。 您需要在類中實現equals方法。

public int index(Object[] array, Object element) {
    for(int i = 0; i < array.lenght; i++) {
        if (array[i] == element) {
            return i;
        }
        if (array[i].equals(element) {
            return i;
        }
    }
    return -1;
}

最好的方法是編寫自己的函數。 每個內置方法都有問題,例如需要BinarySearch的排序數組或為asList方法創建新的列表對象。

使用這樣的方法。

public int index( int search, int[] arr ){
  for( int i=0; i< arr.length ; i ++ )
    if( arr[ i ] == search)
     return i;
  return -1;
}

有幾種方法

1)Arrays.binarySearch

2)或者您也可以循環查找。

 public int getArrayIndex(int[] myArray, obj myObject)
{
  int length = Array.getLength(myArray);//get the size of the array
  for (int i = 0; i < lenght; ++i)
   {
     if (myArray[i] == myObject)
      {
        return(i);
      }
    }
   return(-1);//didn't find what I was looking for
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM