2016-12-07 10 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好的,我会尽力让你知道。 –

相关问题