2010-10-01 64 views
0

我有一個標準的java數組,其中null值用於未分配或陣列中的空白點。如何判斷是否還有未分配的值,即數組是否已滿?如何確定數組中是否還有未分配的值?

+2

你說的全是什麼意思? – zigdon 2010-10-01 19:32:50

+0

這很大程度上取決於數組的類型,以及如何初始化並使用它。你可以發佈一些示例代碼來展示你如何創建和使用數組? – 2010-10-01 19:33:33

+4

這個問題沒有意義。它總是有你要求的大小。 – gawi 2010-10-01 19:35:18

回答

3

如果「不完整」的含義有數組中的空元素,那麼你會創建一個方法,如

public boolean isFull(Object[] array) { 
    for (Object element : array) { 
     if (element == null) return false; 
    } 
    return true; 
} 
5

作爲一個靜態大小的數組,你可以說一個數組總是滿的。

但是,如果你想知道你的數組中有多少個null值,你只需要經過它。

Object[] array = new Object[10]; 
int count = 0; 
for(Object item : array){ 
    if(item == null) 
     count++; 
} 

或特定方法:

public int countNulls(Object[] array){ 
    int count = 0; 
    for(Object item : array){ 
     if(item == null) 
      count++; 
    } 
    return count; 
} 

如果你被指數填寫您的數組索引:

public int nextEmptyIndex(Object[] array){ 
    int count = 0; 
    for(Object item : array){ 
     if(item == null) 
      return count; 
     else 
      count++; 
    } 
    return -1; //Return an invalid value or do something to say that there is no empty index. 
} 
+0

好吧然後我怎麼知道數組中是否有空格 – Luron 2010-10-01 19:33:38

+0

'if(countNulls(array)> 0)...' – 2010-10-01 19:39:27

+0

你的答案是誤導性的,因爲它只在兩個假設下有效:他有一個對象集合,並且他分配的值不會爲空。 – 2010-10-01 19:43:14

0

如果(myarray的[myarray.length-1]! = null){
System.out.println(「Array is full」);
}

+0

這對int []不起作用。 – gawi 2010-10-01 19:36:49

+0

遐我猜想沒有。這個問題也不是很清楚,對不起 – mezzie 2010-10-02 03:41:35

0

雖然我明白你的問題,我有點困惑,爲什麼你正在問它。首先,我會刺探Q本身。

Java中的數組的大小是固定的,所以它們的'完整'的概念並沒有太多意義。對於原始數組,整個數組用初始化的默認值進行初始化。因此,如果您知道要分配的值是非默認值,則可以從元素長度1中檢查缺省值。

如果你有一個對象數組,你可以檢查空值。再次,這假定你不是在你的人口中某個時候分配空值(這可能是不好的做法)。再次,您可以從陣列的最後一個元素入手,隨時檢查。

您可以通過使用適當的對象集合(例如數組列表)來避免此問題。您可以根據需要填充儘可能多的元素。

+0

讓我再補充一點,因爲在Java中真的不存在真正的基本數組,因爲它們在低級語言中,你真的沒有獲得任何性能方面的東西,對象集合。當然,由於維護對象本身的開銷很小,因此對象集合的內存開銷會更大。儘管如此,這隻會成爲一個因素。 – 2010-10-01 19:39:32

+0

由於某些原因,許多Java初學者使用數組。必須有很多提倡數組的Java學習課程。 – 2010-10-01 20:16:32

+0

有趣的是 - 我曾與來自世界知名學術機構的科學家一起參與大型國際太空任務。在代碼審查期間,我遇到了遍及代碼的這個多維雙重數組。我一直在分析它是如何使用的,試圖理解它被使用的算法,但是我只是不能在我的生活中弄清楚它。 最終,我意識到他正在使用數組來模擬內存。是的,讓我重複一遍,他創造了一個巨大的陣列,他到處傳遞模擬記憶。 它在一定程度上相當有洞察力 – 2010-10-01 20:26:35

1

陣列總是充滿,所以

public boolean isFull(Object[] array) { 
    return true; 
} 
+0

好吧,我們明白了。我說錯了。放鬆 – Luron 2010-10-01 19:43:33

+1

好,那麼你應該修復措辭。 – 2010-10-01 20:21:52

相關問題