2014-09-18 98 views
-1

我已經創建了一個大小爲x的數組。並且想要將一個元素添加到數組中的第一個空索引中。例如,如果數組的大小爲10,並且索引爲1和2,則將該元素添加到索引3中。將元素添加到第一個空數組索引

+4

你確定你應該使用一個數組,而不是[ArrayList的(http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html)? – user2357112 2014-09-18 17:09:03

+0

數組的類型是什麼?如果它是原始類型,那麼你將如何確定空/空? – StackFlowed 2014-09-18 17:12:17

+1

數組是基元還是對象類型? – Vishrant 2014-09-18 17:12:27

回答

0

如果數組是一個int數組,你可以做

for(int i=0; i < array.length; i++) 
    if(array[i] == 0) 
     array[i] = newValue; 

如果它是一個Object數組,你可以做

for(int i = 0; i < array.length; i++) 
    if(array[i] == null) 
     array[i] = newObject; 
1

創建大小的數組X。
創建一個表示所有空閒索引的大小爲x的堆棧。將所有索引(以相反順序)推送到堆棧。
當您嘗試將元素添加到從堆棧中彈出的下一個空閒索引。使用索引插入到數組中。
如果刪除了某個元素,請將索引推回到堆棧以指示它是空閒的,並使數組中的元素無效。
如果你想添加一個元素,堆棧是空的,即數組已滿,那麼你決定做什麼。

你的其他選擇是循環訪問數組以找到下一個將由null指示的「空閒」點。

+0

不幸的是我不能使用堆棧。 – Jared 2014-09-18 18:05:02

+0

您可以通過另一個陣列實現堆棧 – Cratylus 2014-09-18 18:16:56

0

遍歷數組,直到找到零/ null。例如,

int a[] = new int[100]; 
int x; //Number to be inserted 
for(int i=0;i<a.length;i++) 
{ 
    if(a[i]==0) 
    a[i]=x; 
} 

object a[] = new object[100]; 
int x; 
for(int i=0;i<a.length;i++) 
{ 
    if(a[i]==null) 
    a[i]= new Integer(x); 
} 
0

在上面的反應,有找到第一個空索引後,沒有提前終止for循環。要避免填充所有空索引,請將break語句添加爲條件語句的一部分。

for(int i = 0; i < array.length; i++) 
{ 
    if(array[i] == null) 
    { 
     array[i] = newObject; 
     break; 
    } 
} 
相關問題