首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在列表中动态迭代

在列表中动态迭代
EN

Stack Overflow用户
提问于 2014-01-28 01:25:25
回答 1查看 69关注 0票数 0

我有一个方法,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
List<AbcObject> aaList= session.createCriteria(AbcObject.class)

aaList包含如下元素:

代码语言:javascript
代码运行次数:0
运行
复制
t_id   value
11      3
12      20
14      60
15      27    ------->(3+20+60+27=100), here min=11 & max=15
18      40  
22      20
33      40
45      20   -------->(40+20+40+20=100), here min=18 & max=45

我必须迭代这个列表,如果value的运行总数达到100,那么一个元素将被添加到另一个列表中,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
min     max
11      15
18      45

请注意,完成除法的100值需要是可配置的。

第一个元素本身的值也可能是100。在这种情况下,minmax将具有相同的值。

我想出了以下方法:

代码语言:javascript
代码运行次数:0
运行
复制
final int BARRIER = 100;

//I am going to assume there are getter methods in your AbcObject and 
//that all values are greater than 0
List<int[]> minMaxs = new List<int[]>();
int sum = 0; 
int min = 0;
for (AbcObject obj: aaList) {
    if (sum == 0) {
        //start over, remember min
        min = obj.getT_id();
    }
    //add value to sum
    sum += obj.getValue();
    if (sum >= BARRIER) {
        //now we need to start again, remember what we got
        minMaxs.add(new int[]{min, obj.getT_id()});
        //reset
        min = 0;
        sum = 0;
    }
}

我发现的另一种方法是:

代码语言:javascript
代码运行次数:0
运行
复制
final int BARRIER = 100;

//I am going to assume there are getter methods in your AbcObject and 
//that all values are greater than 0
List<AbcObject> minMaxs = new List<AbcObject>();
int sum = 0; 
int min = 0;
for (AbcObject obj: aaList) {
    if (sum == 0) {
        //start over, remember min
        min = obj.getT_id();
    }
    //add value to sum
    sum += obj.getValue();
    if (sum >= BARRIER) {
        //now we need to start again, remember what we got
        minMaxs.add(new AbcObject(min, obj.getT_id()));
        //reset
        min = 0;
        sum = 0;
    }
}

有没有更好的方法?

EN

回答 1

Stack Overflow用户

发布于 2014-01-28 01:35:21

您的代码看起来非常合理,并且易于理解。我看不出有迫切的改变的必要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21387457

复制
相关文章

相似问题

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