java - 如何迭代比java中列表指定的大小更多的次数

标签 java list iteration

我有一个类类型列表,它按以下方式保存类类型对象的值

public  List<Vacc_vs6> refarray_vac1(String fdate,String ldate) throws SQLException, ParseException {
    st_jsp.clear();
    try {  
        con = getConnection();
        stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
        String vs1 = "sql query";
        stmt.executeQuery(vs1);
        rs = stmt.getResultSet();

        while (rs.next()) {
            Vacc_vs6 ref = new Vacc_vs6();

            ref.setLogtime(rs.getString(1));
            ref.setBeam_current(rs.getString(2));
            ref.setBeam_energy(rs.getString(3));
            ref.setst4_vs6_bag1_rb(rs.getString(4));
            ref.setst4_vs6_bag2_rb(rs.getString(5));
            ref.setst4_vs6_bag3_rb(rs.getString(6));
            ref.setst4_vs6_bag4_rb(rs.getString(7));
            ref.setst4_vs6_bag5_rb(rs.getString(8));
            ref.setst4_vs6_bag6_rb(rs.getString(9));
            ref.setst4_vs6_bag7_rb(rs.getString(10));
            ref.setst4_vs6_bag8_rb(rs.getString(11));
            ref.setst4_vs6_bag9_rb(rs.getString(12));
            st_jsp.add(ref);                  
        }
    } catch (Exception e) {
        System.out.println("\nException in refarray_vac1 " + e);
    }          
    return st_jsp;
}

st_jsp 是列表。 现在我采用另一个类类型列表,并希望将值添加到它对应于列表 st_jsp 的每一列。我还想只在第二个列表中添加满足给定 if 条件的那些值,否则转到 else 并将 null 放在特定列。 为此,代码是-

List<Vacc_vs6> new_list=new ArrayList<Vacc_vs6>();
double is = 9.5;
double js = 10.5;
int no=0;
for (no=0;no<st_jsp.size();no++) {
    String i= st_jsp.get(no).getBeam_current();
    double im = Double.parseDouble(i) ;
    if(im>is && im<js) {
        new_list.addAll(st_jsp);
    } else  {
        new_list.addAll(null);
    }
    is +=10;js +=10; 
}
  1. 问题 1--> 如何在 new_list.addAll(???) 中添加与该索引对应的所有 12 列;我必须在我放的地方添加列吗?

    ref.setLogtime(rs.getString(1)); ref.setBeam_current(rs.getString(2));

  2. 问题 2 for(no=0;no<st_jsp.size();no++)循环将一直持续到 st_jsp 的大小但如果我这样做,那么 st_jsp 的所有值由于其他条件,列表将不会显示,因为我必须添加 0null对于那些不满足上述 if 条件的行。为此要做什么?

最佳答案

1 Problem-1--> **how to add all the 12 columns corresponding to that index in new_list.addAll(???);**Did I have to add column where I put ??

要仅将满足条件的对象添加到新列表中,您应该这样做:

if (im > is && im < js) {
    new_list.add(st_jsp.get(no));
}

方法addAll()将一个集合中的所有元素添加到另一个集合中。因此,按照您的操作方式,第一次满足您的条件时,您将在 st_jsp 中添加每个引用至 new_list .然后你会每次都重新添加元素 new_list.addAll(st_jsp)叫做。使用 add()将只添加您想要的对象。

2) Problem-2 for(no=0;no<st_jsp.size();no++) loop will go till the size of st_jsp but if I do so then all values of st_jsp list will not be displayed because of else condition as I ahve to add 0 or null to those rows whcih do not satisfy the above if condition.What to do for this

您在 else 中执行相同的操作if 时你在做什么满足条件,即把st_jsp中的所有元素相加至 new_list :

if (im > is && im < js) {
    new_list.addAll(st_jsp);
} else {
    new_list.addAll(st_jsp);
}

这意味着,在循环之后,您将以 st_jsp.size() 结束副本st_jspnew_list .

如果需要在new_list中添加一个所有字段都包含null的对象每当一个对象不满足你的条件时,你首先需要创建这个对象,然后在不满足条件时添加它。此外,如果您需要测试 st_jsp 中的每个元素如果它满足 is 的所有值的条件和 js ,您需要在 for 中放置另一个循环循环。

List<Vacc_vs6> new_list = new ArrayList<Vacc_vs6>();
for (int no=0; no < st_jsp.size(); no++) {
    double is = 9.5;
    double js = 10.5;
    double im = Double.parseDouble(st_jsp.get(no).getBeam_current());
    // flag to check if an element was added to new_list
    boolean added = false;
    while (is < 209.9 && js < 210.5) {
        if (im > is && im < js) {
            new_list.add(st_jsp.get(no));
            added = true;
            break;
        }
        is += 10;
        js += 10;
    }
    if (!added) {
        // If the element was not added, add an empty object,
        // assuming that no field is set when creating the object.
        new_list.add(new Vacc_vs6());
    }
}

关于java - 如何迭代比java中列表指定的大小更多的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28986076/

相关文章:

java - 编写基于客户端-服务器的游戏的建议

android - 迭代导致 Number Picker Listener 崩溃

ruby - Rails 应用程序中复杂数据结构的遍历

algorithm - 模式识别算法/技术

python - 如何以直线打印元组内的列表

python - 如何将列表的元素拆分为 Python 中的列表列表?

java - 如何使用 try 和资源将 while 循环放入线程中?

java - 当另一个类调用 Singleton.instance.show() 时,带有 CardLayout 的 Singleton 将不会显示卡片

Java - 在多个类中具有相同的引用

list - 在 Lisp 中柯里化(Currying) : difference between (list 1 2 3) and (1 2 3)?