2016-12-07 37 views
-1

我正在檢索一些long值並將其存儲在List<Long> l中。如何將列表<Long>中存儲的值與長整型值進行比較?

這裏是List<Long> l的退出值:

D/lng: [2197, -1007, 4003] 

然後,我想它像<=900>900long值進行比較。

方法如下:

public void filterRequests(final List<Long> l) { 

      final int size = l.size(); 
      int i; 

      for (i = 0; i < size; i++){ 

      } 
      Log.d("lng", String.valueOf(l)); 

      if (l.get(i) <= 900) { 
       // do the logic when l <= 900  
      } else { 
      } 

    } 

的問題是,if (l.get(i) <= 900)if (l.get(i) > 900)都不能正常工作,即使l.get(i)有值都<=900>900,請參閱:D/lng: [2197, -1007, 4003]

UPDATE:@HarisQureshi「答案工作,但問題是,for循環的原因,if條件裏面被調用3次,而我想它只能被調用一次。所以,我想知道有沒有辦法在代碼上面定義for循環,然後在if (l.get(i) <= 900)if (l.get(i) > 900)條件中使用i

+7

太多不相干的代碼比較你l.get(i)Long。請閱讀:[如何創建一個最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve)。示例:[IDEONE](http://ideone.com/I3pgHv) – Andreas

+0

在方法返回後,傳遞給'filterRequests()'的列表是否已更新?請記住,您的'onDataChange()'處理程序稍後會被調用,並且它們引用該*相同的*列表。聲明參數'final'不會使列表不可變。不要混淆「Java是按值傳遞」與它是通過值傳遞的* reference *值的事實。該列表本身將被視爲通過引用傳遞,因此該方法和調用者*共享*相同的列表。 – Andreas

+0

不使用Android/firebase或其他創建示例。純Java和本地類。這會更簡單,你甚至可以自己找到答案......這是Andreas鏈接的解釋。 – AxelH

回答

0

您制定了一個列表LongListLong都不是原始數據類型。 在你的問題中,你正在比較原始數據類型和非原始數據類型,比較器的兩邊應該是相同的數據類型。

你在做什麼:

if (l.get(i) <= 900) 

這裏l.get(i)返回Long值,其中爲900是整數值。

你應該做的:

只需做900L

if (l.get(i) <= 900L) 

或者

if (l.get(i) > 900L) 
+2

我邀請您閱讀此[線程](http://stackoverflow.com/a/26761426/4391450) – AxelH

+1

您是否嘗試使用上述值進行調試? –

+0

@HarisQureshi好的,我會盡力讓你知道。 –

相關問題