首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何迭代存储在List<Long>中的每个值?

如何迭代存储在List<Long>中的每个值?
EN

Stack Overflow用户
提问于 2016-12-29 13:23:18
回答 4查看 89关注 0票数 0

我有一个参数为List<Long> l的函数。

函数中有一个if语句,我必须对存储在List<Long> l中的每个值进行迭代。

我想这么做:

代码语言:javascript
运行
复制
    public void myFunction(final List<Long> l) {

        final int size = l.size();

        for (int i = 0; i < size; i++){
           if (l.get(i) <= 900) {
              ...       
           Log.d("resultL", String.valueOf(l.get(i)));
           } else {
           }
        }

    }

这里,resultL只记录了-64338

存储在List<Long> l中的值是[-64338, -15512, -15224, 8344],但是所发生的情况是,if语句只使用-64338并执行逻辑,而不是使用所有的4个值。

更新1

使用@KushPatel的答案,resultL打印出:

代码语言:javascript
运行
复制
D/resultL: -64338
D/resultL: -15512
D/resultL: -15224
D/resultL: -64338
D/resultL: -15512
D/resultL: -15224
D/resultL: -64338
D/resultL: -15512
D/resultL: -15224
D/resultL: -64338
D/resultL: -15512
D/resultL: -15224

为什么会发生这种事?

如何对这里存储的所有4个值进行迭代,而不仅仅是一个?

请帮我解决这个问题。

EN

回答 4

Stack Overflow用户

发布于 2016-12-29 13:47:12

据我所知,当你得到所有小于900的值后,你想做些什么。然后,您应该首先将它们放在另一个List

代码语言:javascript
运行
复制
public void myFunction(final List<Long> l) {

    final int size = l.size();
    List<Long> results = new ArrayList<>();

    for (int i = 0; i < size; i++){
       if (l.get(i) <= 900) {
           results.add(l.get(i));
       } else {
           ...
       }
    }

    // do your thing with results list
}

我认为有很多方法可以做到这一点,但这是简单和容易理解的。

票数 1
EN

Stack Overflow用户

发布于 2016-12-29 13:32:04

如果我正确理解,您应该执行一些操作,如果您的所有元素小于或等于900。对吗?试着像这样:

代码语言:javascript
运行
复制
boolean isDataValid = true;
for(Long num : l){
     if (num  > 900){
          isDataValid = false;
     }
}

if(isDataValid){

}else{

}
票数 0
EN

Stack Overflow用户

发布于 2016-12-29 14:16:18

几个问题:

1)使用表示负数

它的最小值为0,最大值为264-1。当需要比int提供的值范围更广的值时,请使用此数据类型。

2)你正在检查一个数字是否小于900

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

负数会溢出,变成正数,Java (就像现在大多数的计算机体系结构一样)使用的是二补,所以你的一些负数会变成大于900的数字,不会被打印在屏幕上。

溶液

1)使用整数而不是长

代码语言:javascript
运行
复制
public void myFunction(final List<Integer> l) {

final int size = l.size();
List<Integer> results = new ArrayList<>();

for (int i = 0; i < size; i++){
   if (l.get(i) <= 900) {
       results.add(l.get(i));
   } else {
       ...
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41380665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档