首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止在java中两次显示Arraylist值

防止在java中两次显示Arraylist值
EN

Stack Overflow用户
提问于 2015-02-16 06:46:01
回答 2查看 1.6K关注 0票数 3

我有一个返回数组的方法。但是Arraylsit显示了它的值两次。密码是-

代码语言:javascript
复制
ArrayList<Double> ref_jsp=new ArrayList<Double>();

public  ArrayList<Double> refernece(String name) throws SQLException, ParseException {

    String first=name.substring(1,19);
    String last =name.substring(24,42);
   List<Double> slist = new ArrayList<Double>(map1.keySet());
  String s = StringUtils.join(slist, ',');
  System.out.println("comma separated string"+s);

       try
            {  
              con = getConnection();
              stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

             String vs2="SQL Query"
             stmt.executeQuery(vs2);
             rs1 = stmt.getResultSet();

             while(rs1.next()) 
                {
                   ref_jsp.add((rs1.getDouble(1)));
                   ref_jsp.add((rs1.getDouble(2)));
                   ref_jsp.add((rs1.getDouble(3)));
                   ref_jsp.add((rs1.getDouble(4)));
                   ref_jsp.add((rs1.getDouble(5)));
                   ref_jsp.add((rs1.getDouble(6)));
                   ref_jsp.add(rs1.getDouble(7));
                   ref_jsp.add(rs1.getDouble(8));
                   ref_jsp.add(rs1.getDouble(9));
                   ref_jsp.add(rs1.getDouble(10));
                   ref_jsp.add((rs1.getDouble(11)));

            }  
         }
        catch( Exception e )
                {
                    System.out.println("\nException in reference "+e);
                }
        return ref_jsp;
    }

我的Sql查询很好。我检查了ref_jsp返回的ref_jsp值是否显示,twice.Please解释我出错的地方??我显示列表值的jsp代码是-

代码语言:javascript
复制
<%
 String ref_name= request.getParameter("ref_logtime");
 pageContext.setAttribute("ref_name", ref_name);
 ref.FindClosestToMultiplesOfTen(ref_name);
 ref.refernece(ref_name);
%>
<table width = "300px" border = "1" cellspacing="2">

 <tr><c:forEach var="r" items="${ref.refernece(param.ref_logtime)}"> 
 <td><c:out value="${r}"></c:out></td>
 </c:forEach></tr>
 </table>

我的输出是-

代码语言:javascript
复制
 value-1 value-2 value-3 value-4 value-1 value-2 value-3 value-4
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-16 07:28:56

看起来问题就在于java类中的下面一行。

代码语言:javascript
复制
ArrayList<Double> ref_jsp = new ArrayList<Double>();

您已经将ref_jsp声明为类级变量,将其移动到public ArrayList<Double> refernece(String name)方法中。

之所以发生这种情况,是因为您正在从jsp中调用两次referenece方法。

代码语言:javascript
复制
<%
 String ref_name= request.getParameter("ref_logtime");
 pageContext.setAttribute("ref_name", ref_name);
 ref.FindClosestToMultiplesOfTen(ref_name);
 ref.refernece(ref_name); //******* 1st call *********
%>
<table width = "300px" border = "1" cellspacing="2">

 <tr><c:forEach var="r" items="${ref.refernece(param.ref_logtime)}">//***2nd call*** 
 <td><c:out value="${r}"></c:out></td>
 </c:forEach></tr>
 </table>

在第一次调用期间,假设您有10项,而这些项被添加到您的数组列表中,并且由于该数组列表是一个实例级变量,在第二次调用期间,您再次得到10项,并且与现有的10项一起添加,因此您有重复的项。

票数 2
EN

Stack Overflow用户

发布于 2015-02-16 08:29:53

@Zeeshan正确地指出了错误。如果不希望将数组列表作为函数的本地成员返回,而且正如您前面提到的,在另一个方法中也使用了ref_jsp,那么在对该列表进行所有相关方法操作时,请确保清除数组列表中的元素。为此使用ref_jsp.clear()。

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

https://stackoverflow.com/questions/28535886

复制
相关文章

相似问题

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